diff --git a/.editorconfig b/.editorconfig index dd6173cc..ba4931db 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 Johannes Loher +# +# SPDX-License-Identifier: MIT + root = true [*] diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 8d021e69..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", // Specifies the ESLint parser - - parserOptions: { - ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features - sourceType: "module", // Allows for the use of imports - }, - - extends: [ - "plugin:@typescript-eslint/recommended", // Uses the recommended rules from the @typescript-eslint/eslint-plugin - "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier - "plugin:prettier/recommended", // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - - rules: { - // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs - // e.g. "@typescript-eslint/explicit-function-return-type": "off", - }, -}; diff --git a/.gitea/ISSUE_TEMPLATE/bug_report.yaml b/.gitea/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 00000000..fc0fbaa0 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,99 @@ +# 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 diff --git a/.gitea/ISSUE_TEMPLATE/config.yaml b/.gitea/ISSUE_TEMPLATE/config.yaml new file mode 100644 index 00000000..f1387a8f --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/config.yaml @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +blank_issues_enabled: false diff --git a/.gitea/ISSUE_TEMPLATE/feature_request.yaml b/.gitea/ISSUE_TEMPLATE/feature_request.yaml new file mode 100644 index 00000000..83816387 --- /dev/null +++ b/.gitea/ISSUE_TEMPLATE/feature_request.yaml @@ -0,0 +1,28 @@ +# 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 diff --git a/.gitignore b/.gitignore index f4078b46..c13ce325 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Johannes Loher +# SPDX-FileCopyrightText: 2021 Oliver Rümpelein + +# +# SPDX-License-Identifier: MIT + # IDE .idea/ .vs/ @@ -17,3 +23,10 @@ dist # Junit results results.xml +junit.xml + +# foundry +/client +/common + +.pnpm-store/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index bbc3ad05..00000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,97 +0,0 @@ -image: node:latest - -stages: - - prepare - - test - - build - - release - -cache: &global_cache - key: - files: - - package-lock.json - policy: pull - paths: - - node_modules/ - -install-dependencies: - stage: prepare - script: - - npm install - cache: - <<: *global_cache - policy: pull-push - -lint: - stage: test - script: - - npm run lint - cache: - <<: *global_cache - -test: - stage: test - script: - - npm run test:ci - cache: - <<: *global_cache - artifacts: - when: always - reports: - junit: - - results.xml - -build: - stage: build - script: - - npm run build - - mv dist ds4 - cache: - <<: *global_cache - artifacts: - paths: - - ds4 - expire_in: 1 week - -.release-template: &release-template - stage: release - before_script: - - 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: | - npm run updateManifest -- --update=${RELEASE_TYPE} - RELEASE_VERSION=$(jq -r '.version' < package.json) - git add package.json package-lock.json src/system.json - git --no-pager diff - git commit -m "release version ${RELEASE_VERSION}" - git tag -f latest - git tag -f ${RELEASE_VERSION} - git push origin ci-processing:${CI_BUILD_REF_NAME} - git push origin latest -f - 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 diff --git a/.gitlab/issue_templates/Bug Report.md b/.gitlab/issue_templates/Bug Report.md deleted file mode 100644 index c209b177..00000000 --- a/.gitlab/issue_templates/Bug Report.md +++ /dev/null @@ -1,29 +0,0 @@ -# Description - -Please describe the issue. - -# Steps to Reproduce - -1. ... -2. ... -3. ... - -# Expected Behavior - -Please describe the expected behavior. - -# Actual Behavior - -Please describe the actual behavior. - -# Additional Details - -These are optional, please add them if it makes sense. - -- ![Screenshot]() -- [Logfile]() -- ... - -# Possible Solutions - -If you have any suggestions on how to solve the issue, please add them here. diff --git a/.gitlab/issue_templates/Feature Request.md b/.gitlab/issue_templates/Feature Request.md deleted file mode 100644 index d6dbe30b..00000000 --- a/.gitlab/issue_templates/Feature Request.md +++ /dev/null @@ -1,13 +0,0 @@ -# Story - -As a …, I want … so that … - -# Description - -Please add a more detailed description of the feature here. - -# Acceptance criteria - -1. Criterion 1 -2. Criterion 2 -3. … diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 8acb5aa3..00000000 --- a/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -# IDE -.idea/ -.vs/ - -# Node Modules -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index b009dfb9..2bd5a0a9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/* +22 diff --git a/.nvmrc.license b/.nvmrc.license new file mode 100644 index 00000000..56430a92 --- /dev/null +++ b/.nvmrc.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..3c545cf4 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2021 Johannes Loher +# +# SPDX-License-Identifier: MIT + +/dist +/package-lock.json +/node_modules/ +/.vscode/ +client +common +pnpm-lock.yaml diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 42618567..00000000 --- a/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: false, - printWidth: 120, - tabWidth: 4, -}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fab51eba..2d0f12b4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,6 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - "gruntfuggly.todo-tree", - "eg2.vscode-npm-script" - ] -} + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + ] +} \ No newline at end of file diff --git a/.vscode/extensions.json.license b/.vscode/extensions.json.license new file mode 100644 index 00000000..409f785b --- /dev/null +++ b/.vscode/extensions.json.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein + +SPDX-License-Identifier: MIT diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..370f6fec --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "runtimeExecutable": "/usr/bin/chromium", + "name": "Launch Chrome against localhost", + "url": "http://localhost:30000/game", + "pathMapping": { + "/systems/ds4": "${workspaceFolder}/dist" + } + } + ] +} diff --git a/.vscode/launch.json.license b/.vscode/launch.json.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/.vscode/launch.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..bb762981 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "eslint.useFlatConfig": true, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, +} diff --git a/.vscode/settings.json.license b/.vscode/settings.json.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/.vscode/settings.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.woodpecker/checks.yaml b/.woodpecker/checks.yaml new file mode 100644 index 00000000..bf3e1cdf --- /dev/null +++ b/.woodpecker/checks.yaml @@ -0,0 +1,70 @@ +# 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:22 + - &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: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm lint + formatcheck: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm format:check + typecheck: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm typecheck + test: + depends_on: install + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm test + reuse: + depends_on: install + image: fsfe/reuse:latest + commands: + - reuse lint + commitlint: + depends_on: install + 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: + depends_on: [lint, formatcheck, typecheck, test, reuse] + image: *node_image + commands: + - export APPDATA=$(pwd) + - <<: *enable_pnpm + - pnpm build diff --git a/.woodpecker/publish.yaml b/.woodpecker/publish.yaml new file mode 100644 index 00000000..5cdef92e --- /dev/null +++ b/.woodpecker/publish.yaml @@ -0,0 +1,132 @@ +# 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:22 + - &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 + - &publish_manifest_base + image: alpine:latest + environment: + FORGE_TOKEN: + from_secret: forge_token + 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"' + +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: + depends_on: install + image: *node_image + environment: + NODE_ENV: production + commands: + - export APPDATA=$(pwd) + - <<: *enable_pnpm + - pnpm build + package: + depends_on: build + 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: + depends_on: build + image: *node_image + commands: + - <<: *enable_pnpm + - pnpm changelog + choose-latest-channel: + depends_on: build + image: alpine:latest + commands: + - echo latest > .RELEASE_CHANNEL + when: + <<: *is_latest_channel + choose-beta-channel: + depends_on: build + image: alpine:latest + commands: + - echo beta > .RELEASE_CHANNEL + when: + <<: *is_beta_channel + release-latest: + depends_on: + - package + - changelog + - choose-latest-channel + image: *release_plugin + settings: + <<: *release_base_settings + when: + <<: *is_latest_channel + release-beta: + depends_on: + - package + - changelog + - choose-beta-channel + image: *release_plugin + settings: + <<: *release_base_settings + prerelease: true + when: + <<: *is_beta_channel + publish-manifest-latest: + <<: *publish_manifest_base + depends_on: release-latest + when: + <<: *is_latest_channel + publish-manifest-beta: + <<: *publish_manifest_base + depends_on: release-beta + when: + <<: *is_beta_channel + publish-to-foundry-admin: + depends_on: release-latest + image: johannesloher/foundry-publish:v4.0.0 + environment: + FVTT_PACKAGE_ID: + from_secret: fvtt_package_id + FVTT_TOKEN: + from_secret: fvtt_token + 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 + when: + <<: *is_latest_channel diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml new file mode 100644 index 00000000..17966857 --- /dev/null +++ b/.woodpecker/release.yaml @@ -0,0 +1,49 @@ +# 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:22 + - &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 + environment: + FORGE_TOKEN_NAME: + from_secret: forge_token_name + FORGE_TOKEN: + from_secret: forge_token + 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} diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md new file mode 100644 index 00000000..53e613dd --- /dev/null +++ b/ATTRIBUTION.md @@ -0,0 +1,72 @@ + + +# Attribution + +* [Dungeonslayers] by Christian Kennig is licensed under [CC BY-NC-SA 3.0 DE]. +* The icons in [assets/icons/official] are derivative work of icons from + [Dungeonslayers] by Christian Kennig, used under [CC BY-NC-SA 3.0 DE]. They are + licensed under [CC BY-NC-SA 4.0]. +* The compendium packs in [packs] are derivative work of [Dungeonslayers] + by Christian Kennig, used under [CC BY-NC-SA 3.0 DE]. They are licensed under + [CC BY-NC-SA 4.0]. +* The icons in [assets/icons/game-icons/acro-asercion] by Caro Asercion from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/cathelineau] by Cathelineau from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/darkzaitev] by [DarkZaitzev] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/delapouite] by [Delapouite] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/heavenly-dog] by [HeavenlyDog] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/lorc] by [Lorc] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/sbed] by [Sbed] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/skoll] by Skoll from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The icons in [assets/icons/game-icons/willdabeast] by [Willdabeast] from + [Game-icons.net] are licensed under [CC BY 3.0]. +* The images in [assets/tokens/devin-night] by [Devin Night] are + licensed under these custom [Token Usage Rights]. +* The [Lora] font in [fonts/Lora] by The Lora Project Authors is licensed + under [OFL 1.1]. +* The Woodstamp font in [fonts/Woodstamp] by [Ryoichi Tsunekawa] is licensed + under a custom [EULA](LICENSES/LicenseRef-Woodstamp.txt). + +[Dungeonslayers]: https://www.dungeonslayers.net/ +[Game-icons.net]: https://game-icons.net/ +[DarkZaitzev]: http://darkzaitzev.deviantart.com/ +[Delapouite]: https://delapouite.com/ +[HeavenlyDog]: http://www.gnomosygoblins.blogspot.com/ +[Lorc]: http://lorcblog.blogspot.com/ +[Sbed]: http://opengameart.org/content/95-game-icons +[Willdabeast]: http://wjbstories.blogspot.com/ +[Devin Night]: https://immortalnights.com/ +[Lora]: https://github.com/cyrealtype/Lora-Cyrillic +[Ryoichi Tsunekawa]: https://dharmatype.com/ + +[CC BY-NC-SA 3.0 DE]: https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode +[CC BY-NC-SA 4.0]: LICENSES/CC-BY-NC-SA-4.0.txt +[CC BY 3.0]: LICENSES/CC-BY-3.0.txt +[Token Usage Rights]: LICENSES/LicenseRef-DevinNightTokenUsageRights.txt +[OFL 1.1]: LICENSES/OFL-1.1.txt + +[assets/icons/official]: assets/icons/official +[packs]: packs +[assets/icons/game-icons/acro-asercion]: assets/icons/game-icons/acro-asercion/ +[assets/icons/game-icons/cathelineau]: assets/icons/game-icons/cathelineau/ +[assets/icons/game-icons/darkzaitev]: assets/icons/game-icons/darkzaitev/ +[assets/icons/game-icons/delapouite]: assets/icons/game-icons/delapouite/ +[assets/icons/game-icons/heavenly-dog]: assets/icons/game-icons/heavenly-dog/ +[assets/icons/game-icons/lorc]: assets/icons/game-icons/lorc/ +[assets/icons/game-icons/sbed]: assets/icons/game-icons/sbed/ +[assets/icons/game-icons/skoll]: assets/icons/game-icons/skoll/ +[assets/icons/game-icons/willdabeast]: assets/icons/game-icons/willdabeast/ +[assets/tokens/devin-night]: assets/tokens/devin-night +[fonts/Lora]: fonts/Lora/ +[fonts/Woodstamp]: fonts/Woodstamp/ diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..2b43b515 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ + + +# Licensing + +This project is being developed under the terms of the +[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT] for Foundry Virtual Tabletop. + +The project itself is licensed under multiple licenses. [REUSE] is used to +specify the licenses for the individual files. Most of the licenses are +specified either inside the source file or by an accompanying `.license` file, +but for some files, the licenses are specified in [.reuse/dep5]. Some of the +work that is being reused by this project requires attribution to the original +author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md). + +[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/ +[REUSE]: https://reuse.software/ +[.reuse/dep5]: .reuse/dep5 diff --git a/LICENSES/CC-BY-3.0.txt b/LICENSES/CC-BY-3.0.txt new file mode 100644 index 00000000..465aae75 --- /dev/null +++ b/LICENSES/CC-BY-3.0.txt @@ -0,0 +1,93 @@ +Creative Commons Attribution 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. + + b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. + + c. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. + + d. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. + + e. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. + + f. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. + + g. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. + + h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. + + i. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; + + b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; + + c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, + + d. to Distribute and Publicly Perform Adaptations. + + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; + + ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, + + iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. + + b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. + + c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. + + b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. + + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. + + c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. + + e. This License may not be modified without the mutual written agreement of the Licensor and You. + + f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. + +Creative Commons Notice + +Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License. + +Creative Commons may be contacted at http://creativecommons.org/. diff --git a/LICENSES/CC-BY-NC-SA-4.0.txt b/LICENSES/CC-BY-NC-SA-4.0.txt new file mode 100644 index 00000000..baee873b --- /dev/null +++ b/LICENSES/CC-BY-NC-SA-4.0.txt @@ -0,0 +1,170 @@ +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + + l. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. + + C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. + + 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt b/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt new file mode 100644 index 00000000..147c502b --- /dev/null +++ b/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt @@ -0,0 +1,28 @@ + +Token Usage Rights + +Usage Rights +I retain all rights to the artwork and tokens. You may use my tokens for personal use. You may distribute the free tokens but please do not distribute my premium token sets. After purchasing the tokens you can use them in any of your personal games. You may also share them with your regular gaming group. + +Usage Rights for Streaming. +If you are planning on using my tokens in your streamed games, please add a link to my site and “Tokens by Devin Night” or “Some tokens by Devin Night” or “The really awesome tokens were made by Devin Night, he’s so hot right now.” I would also like to be given a heads up, but it is not neccessary. No money is required to use them for streaming. + +Token rights for use in commercial products. +You can use any number of the free tokens in your adventures. (Dark Heroes, both Pathfinder sets and the Space Opera tokens may not be used in any free or commercial product) +You can use 10-20 premium tokens (from packs 21- newest releases, excluding Tome of Beast tokens) at a cost of $10 per token. +Token packs bought from the store do not qualify for commercial use. However any token that exists in my packs may be purchased for commercial use. (with the exception of Tome of Beasts, the Pathfinder sets, Dark Heroes and Space Opera tokens) +For $25 I can make a custom token that you can use exclusively in your commercial product. If I can also sell that token on my site the price is $15. For $10 per token I can modify an existing token to make it match your needs more closely. +The above costs are for the usage of tokens in one product. +Custom tokens made specifically for you may be used in multiple products. +Tokens cannot be bundled separately and may not make up the majority of the product. +Credit to Devin Night (https://immortalnights.com/tokensite/) must appear somewhere in the credit section. +Art may not be modified without my permission. If permission is granted you have the right to alter the tokens in any manner you wish as long as it maintains my standards of work. Altering the token does not make it your work or void my ownership of the art. +I retain all rights to the art and any derivative art. + +I retain the right to re-use and display all token art that I create. In general, I will not re-use a custom token exactly as it was made. In cases involving larger sets of custom tokens, I may release these tokens in token packs. I will do my best to keep all unique tokens of characters exclusive to the purchaser for one year. After that time It will probably be included in a token pack. + +If posting screenshots of the tokens in action please credit Devin Night. + +Please do not use the tokens or any derived work for commercial or non-commercial purposes unless you have contacted me and received permission to do so. + +Thank you. Creating tokens is my main source of income and it allows me to keep my wife and children happy. diff --git a/LICENSES/LicenseRef-Woodstamp.txt b/LICENSES/LicenseRef-Woodstamp.txt new file mode 100644 index 00000000..084007c6 --- /dev/null +++ b/LICENSES/LicenseRef-Woodstamp.txt @@ -0,0 +1,59 @@ + + + + +<<<<<<<<<<<<<<<< ENGLISH >>>>>>>>>>>>>>>>> + +Freewares EULA ( the End User License Agreement )This document is a legal agreement between you, the end user, and Flat-it type foundry. + + +By using or installing Flat it type foundry Freewares ( Free typefaces, Free brushes and Screensavers ) , you agree to be bound by the terms of this Agreement. +Freeware means that you can download it and use it for your commercial and non-commercial works for free. + +Here is a list of things you could do, Only if you want to: +* Mail me about your works +* Link http://flat-it.com/ Download our banners +* Send me a sample of the work you did using Flat it type foundry Freewares +* Mail me some print material you did using Flat it type foundry Freewares +* Credit "Flat-it"on your work +* Smile + +You may not redistribute without permission. + + +DISCLAIMER +Flat-it's freewares are provided to you free of charge. +We give no warranty in relation to these freewares, and you use them at your own risk. +Flat-it.com will not be liable for any damage to your system, any loss or corruption of any data or software, or any other loss or damage that you may suffer as a result of downloading or using these freewares, whether it results from our negligence or in any other way. + + + + + + + + + +<<<<<<<<<<<<<<<< JAPANESE >>>>>>>>>>>>>>>>> + +�t���[�E�F�A�@���C�Z���X + +Flat-it������肵���t���[�E�F�A�i�t���[�t�H���g�A�t���[�u���V�A�X�N���[���Z�C�o�[�j�̎g�p�͈ȉ��Ɏ������C�Z���X�ɓ��ӂ���K�v������܂��B +�t���[�E�F�A�͏��p�A�񏤗p�i�l�g�p�Ȃǁj�Ɋւ�炷�����ł����p���������܂��B���쌠��Flat-it(http://flat-it.com/)�ɂ���܂��B + +�g�p�ɍۂ��Ă͎��̃��X�g�ɏ]���ĉ������B + +*�@�C���������烁�[���ȂǂŘA�����������B +*�@�C����������Flat-it(http://flat-it.com/)�Ƀ����N���ĉ������B +*�@�C����������g�p������i�̃T���v���i�摜�Ȃǁj�������肭�������B +*�@�C����������H�Ɛ��i�ȂǏ��Ǝg�p�̍ۂ͏��i���ЂƂ‰������B +*�@�C����������"Flat-it"�ƃN���W�b�g�����Ă������� + +�܂��A�����̃t���[�E�F�A���Ĕz�z����ꍇ�ɂ͋��‚��K�v�ł��B + + +�Ɛӎ��� +Flat-it�͂����t���[�E�F�A�Ɋւ��Ă��q�l������������Ȃ鑹�Q�ɂ‚��Ă��A��؂̐ӔC�𕉂�Ȃ����̂Ƃ��܂��B���q�l�����g�̐ӔC�ł����p�������B +Flat-it�͂����t���[�E�F�A�̗��p�ɂ���Đ����������Ȃ�ۏؐӔC�������܂���B + +info@flat-it.com diff --git a/LICENSE b/LICENSES/MIT.txt similarity index 92% rename from LICENSE rename to LICENSES/MIT.txt index 5c296ab7..2071b23b 100644 --- a/LICENSE +++ b/LICENSES/MIT.txt @@ -1,4 +1,6 @@ -Copyright 2020 Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug +MIT License + +Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt new file mode 100644 index 00000000..6fe84ee2 --- /dev/null +++ b/LICENSES/OFL-1.1.txt @@ -0,0 +1,43 @@ +SIL OPEN FONT LICENSE + +Version 1.1 - 26 February 2007 + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/README.md b/README.md index bf43ab43..63c6f1b2 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,52 @@ + + # DS4 -An implementation of the Dungeonslayers 4 game system for [Foundry Virtual -Tabletop](http://foundryvtt.com). +[![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) -This system provides character sheet support for Actors and Items and mechanical -support for dice and rules necessary to -play games of Dungeponslayers 4. +An implementation of the [Dungeonslayers] 4 game system for [Foundry Virtual +Tabletop]. + +This system provides sheet support for Actors and Items and mechanical support +for dice and rules necessary to play games of Dungeonslayers 4. ## Installation To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop, -simply paste the following URL into the **Install System** dialog on the Setup -menu of the application. +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: -https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false +https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json ## Development -### Prerequisits +### Prerequisites + +In order to build this system, recent versions of `node` and `pnpm` are +required. Most likely using `npm` or `yarn` also works but only `pnpm` is +officially supported. We recommend using the latest lts version of `node`. If +you use `nvm` to manage your `node` versions, you can simply run -In order to build this system, recent versions of `node` and `npm` are required. -We recommend using the latest lts version of `node`, which is `v14.15.4` at the -time of writing. If you use `nvm` to manage your `node` versions, you can simply -run ``` nvm install ``` in the project's root directory. -You also need to install the the project's dependencies. To do so, run +You also need to install the project's dependencies. To do so, run ``` -npm install +pnpm install ``` ### Building @@ -40,13 +54,13 @@ npm install You can build the project by running ``` -npm run build +pnpm build ``` Alternatively, you can run ``` -npm run build:watch +pnpm watch ``` to watch for changes and automatically build as necessary. @@ -69,7 +83,7 @@ On platforms other than Linux you need to adjust the path accordingly. Then run ``` -npm run link +pnpm link-package ``` ### Running the tests @@ -77,23 +91,27 @@ npm run link You can run the tests with the following command: ``` -npm test +pnpm test ``` ## Contributing -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](mailto:git+dungeonslayers-ds4-155-issue-@git.f3l.de). +Code and content contributions are accepted. To report issues, please contact us in [Matrix](https://matrix.to/#/#ds4:im.f3l.de). ## Licensing -Dungeonslayers (© Christian Kennig) is licensed under [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en). +This project is being developed under the terms of the +[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT] for Foundry Virtual Tabletop. -The icons in [src/assets/official](src/assets/official) are slightly modifed -versions of original Dungeonslayers icons, which have also been published under -CC BY-NC-SA 3.0. Hence the modified icons are also published under this -license. A copy of this license can be found under -[src/assets/official/LICENSE](src/assets/official/LICENSE). +The project itself is licensed under multiple licenses. [REUSE] is used to +specify the licenses for the individual files. Most of the licenses are +specified either inside the source file or by an accompanying `.license` file, +but for some files, the licenses are specified in [.reuse/dep5]. Some of the +work that is being reused by this project requires attribution to the original +author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md). -The software component of this project is licensed under the MIT License, a copy -of which can be found under [LICENSE](LICENSE). +[Dungeonslayers]: https://www.dungeonslayers.net/ +[Foundry Virtual Tabletop]: http://foundryvtt.com/ +[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/ +[REUSE]: https://reuse.software/ +[.reuse/dep5]: .reuse/dep5 diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..a3daa65a --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,116 @@ +# SPDX-FileCopyrightText: 2025 Johannes Loher +# +# SPDX-License-Identifier: MIT + +version = 1 +SPDX-PackageName = "ds4" +SPDX-PackageSupplier = "Johannes Loher " +SPDX-PackageDownloadLocation = "https://git.f3l.de/dungeonslayers/ds4" + +[[annotations]] +path = "assets/icons/official/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "assets/icons/game-icons/caro-asercion/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Caro Asercion" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/cathelineau/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Cathelineau" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/darkzaitev/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "DarkZaitzev, http://darkzaitzev.deviantart.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/delapouite/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Delapouite, https://delapouite.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/heavenly-dog/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "HeavenlyDog, http://www.gnomosygoblins.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/lorc/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Lorc, http://lorcblog.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/sbed/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Sbed, http://opengameart.org/content/95-game-icons" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/skoll/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Skoll" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/icons/game-icons/willdabeast/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Willdabeast, http://wjbstories.blogspot.com/" +SPDX-License-Identifier = "CC-BY-3.0" + +[[annotations]] +path = "assets/tokens/devin-night/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "Devin Night, https://immortalnights.com/" +SPDX-License-Identifier = "LicenseRef-DevinNightTokenUsageRights" + +[[annotations]] +path = "packs/creatures/**" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2021 Sascha Martens", "2021 Johannes Loher"] +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/items/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/languages-and-scripts/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/racial-abilities/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/special-creature-abilities/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/spells/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2021 Sascha Martens" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" + +[[annotations]] +path = "packs/talents/**" +precedence = "aggregate" +SPDX-FileCopyrightText = "2022 Johannes Loher" +SPDX-License-Identifier = "CC-BY-NC-SA-4.0" diff --git a/assets/icons/game-icons/caro-asercion/mountain-climbing.svg b/assets/icons/game-icons/caro-asercion/mountain-climbing.svg new file mode 100644 index 00000000..71a75651 --- /dev/null +++ b/assets/icons/game-icons/caro-asercion/mountain-climbing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/cathelineau/dread.svg b/assets/icons/game-icons/cathelineau/dread.svg new file mode 100644 index 00000000..c0358c98 --- /dev/null +++ b/assets/icons/game-icons/cathelineau/dread.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/cathelineau/fomorian.svg b/assets/icons/game-icons/cathelineau/fomorian.svg new file mode 100644 index 00000000..d00b1ae5 --- /dev/null +++ b/assets/icons/game-icons/cathelineau/fomorian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/darkzaitev/robber-hand.svg b/assets/icons/game-icons/darkzaitev/robber-hand.svg new file mode 100644 index 00000000..0181390a --- /dev/null +++ b/assets/icons/game-icons/darkzaitev/robber-hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/alarm-clock.svg b/assets/icons/game-icons/delapouite/alarm-clock.svg new file mode 100644 index 00000000..26a40243 --- /dev/null +++ b/assets/icons/game-icons/delapouite/alarm-clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/aspergillum.svg b/assets/icons/game-icons/delapouite/aspergillum.svg new file mode 100644 index 00000000..73365614 --- /dev/null +++ b/assets/icons/game-icons/delapouite/aspergillum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/backward-time.svg b/assets/icons/game-icons/delapouite/backward-time.svg new file mode 100644 index 00000000..02e4d4dd --- /dev/null +++ b/assets/icons/game-icons/delapouite/backward-time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/ballerina-shoes.svg b/assets/icons/game-icons/delapouite/ballerina-shoes.svg new file mode 100644 index 00000000..a5e169af --- /dev/null +++ b/assets/icons/game-icons/delapouite/ballerina-shoes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/biceps.svg b/assets/icons/game-icons/delapouite/biceps.svg new file mode 100644 index 00000000..18c0c44d --- /dev/null +++ b/assets/icons/game-icons/delapouite/biceps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/bolt-spell-cast.svg b/assets/icons/game-icons/delapouite/bolt-spell-cast.svg new file mode 100644 index 00000000..fd45f98f --- /dev/null +++ b/assets/icons/game-icons/delapouite/bolt-spell-cast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/bookshelf.svg b/assets/icons/game-icons/delapouite/bookshelf.svg new file mode 100644 index 00000000..3e0cfc17 --- /dev/null +++ b/assets/icons/game-icons/delapouite/bookshelf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/brick-wall.svg b/assets/icons/game-icons/delapouite/brick-wall.svg new file mode 100644 index 00000000..ee488d4f --- /dev/null +++ b/assets/icons/game-icons/delapouite/brick-wall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/card-exchange.svg b/assets/icons/game-icons/delapouite/card-exchange.svg new file mode 100644 index 00000000..9de4a14a --- /dev/null +++ b/assets/icons/game-icons/delapouite/card-exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/cavalry.svg b/assets/icons/game-icons/delapouite/cavalry.svg new file mode 100644 index 00000000..6c578bfc --- /dev/null +++ b/assets/icons/game-icons/delapouite/cavalry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/chalk-outline-murder.svg b/assets/icons/game-icons/delapouite/chalk-outline-murder.svg new file mode 100644 index 00000000..eeba8c9d --- /dev/null +++ b/assets/icons/game-icons/delapouite/chalk-outline-murder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/charging-bull.svg b/assets/icons/game-icons/delapouite/charging-bull.svg new file mode 100644 index 00000000..227d5a73 --- /dev/null +++ b/assets/icons/game-icons/delapouite/charging-bull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/cherry.svg b/assets/icons/game-icons/delapouite/cherry.svg new file mode 100644 index 00000000..4d806c3e --- /dev/null +++ b/assets/icons/game-icons/delapouite/cherry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/contract.svg b/assets/icons/game-icons/delapouite/contract.svg new file mode 100644 index 00000000..af6c5101 --- /dev/null +++ b/assets/icons/game-icons/delapouite/contract.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/convince.svg b/assets/icons/game-icons/delapouite/convince.svg new file mode 100644 index 00000000..7e3dc5b6 --- /dev/null +++ b/assets/icons/game-icons/delapouite/convince.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/deer-track.svg b/assets/icons/game-icons/delapouite/deer-track.svg new file mode 100644 index 00000000..c1c55ba7 --- /dev/null +++ b/assets/icons/game-icons/delapouite/deer-track.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/discussion.svg b/assets/icons/game-icons/delapouite/discussion.svg new file mode 100644 index 00000000..99c39fdb --- /dev/null +++ b/assets/icons/game-icons/delapouite/discussion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/expand.svg b/assets/icons/game-icons/delapouite/expand.svg new file mode 100644 index 00000000..1ed71aba --- /dev/null +++ b/assets/icons/game-icons/delapouite/expand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/extra-time.svg b/assets/icons/game-icons/delapouite/extra-time.svg new file mode 100644 index 00000000..0f9ca9a5 --- /dev/null +++ b/assets/icons/game-icons/delapouite/extra-time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/firewall.svg b/assets/icons/game-icons/delapouite/firewall.svg new file mode 100644 index 00000000..37431fd4 --- /dev/null +++ b/assets/icons/game-icons/delapouite/firewall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/fog.svg b/assets/icons/game-icons/delapouite/fog.svg new file mode 100644 index 00000000..b5aabfbf --- /dev/null +++ b/assets/icons/game-icons/delapouite/fog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/frozen-body.svg b/assets/icons/game-icons/delapouite/frozen-body.svg new file mode 100644 index 00000000..0b410acb --- /dev/null +++ b/assets/icons/game-icons/delapouite/frozen-body.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/half-dead.svg b/assets/icons/game-icons/delapouite/half-dead.svg new file mode 100644 index 00000000..c4442063 --- /dev/null +++ b/assets/icons/game-icons/delapouite/half-dead.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/hand-wing.svg b/assets/icons/game-icons/delapouite/hand-wing.svg new file mode 100644 index 00000000..9382cf63 --- /dev/null +++ b/assets/icons/game-icons/delapouite/hand-wing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/healing.svg b/assets/icons/game-icons/delapouite/healing.svg new file mode 100644 index 00000000..3bbe5c49 --- /dev/null +++ b/assets/icons/game-icons/delapouite/healing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/heart-wings.svg b/assets/icons/game-icons/delapouite/heart-wings.svg new file mode 100644 index 00000000..c9fb8e40 --- /dev/null +++ b/assets/icons/game-icons/delapouite/heart-wings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/hole.svg b/assets/icons/game-icons/delapouite/hole.svg new file mode 100644 index 00000000..08fa4853 --- /dev/null +++ b/assets/icons/game-icons/delapouite/hole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/holy-hand-grenade.svg b/assets/icons/game-icons/delapouite/holy-hand-grenade.svg new file mode 100644 index 00000000..a03c1e60 --- /dev/null +++ b/assets/icons/game-icons/delapouite/holy-hand-grenade.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/holy-water.svg b/assets/icons/game-icons/delapouite/holy-water.svg new file mode 100644 index 00000000..7e18e512 --- /dev/null +++ b/assets/icons/game-icons/delapouite/holy-water.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/human-ear.svg b/assets/icons/game-icons/delapouite/human-ear.svg new file mode 100644 index 00000000..e815ccd9 --- /dev/null +++ b/assets/icons/game-icons/delapouite/human-ear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/invisible-face.svg b/assets/icons/game-icons/delapouite/invisible-face.svg new file mode 100644 index 00000000..13fa869e --- /dev/null +++ b/assets/icons/game-icons/delapouite/invisible-face.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/invisible.svg b/assets/icons/game-icons/delapouite/invisible.svg new file mode 100644 index 00000000..d464c035 --- /dev/null +++ b/assets/icons/game-icons/delapouite/invisible.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/jump-across.svg b/assets/icons/game-icons/delapouite/jump-across.svg new file mode 100644 index 00000000..d80da979 --- /dev/null +++ b/assets/icons/game-icons/delapouite/jump-across.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/kneeling.svg b/assets/icons/game-icons/delapouite/kneeling.svg new file mode 100644 index 00000000..b586b3eb --- /dev/null +++ b/assets/icons/game-icons/delapouite/kneeling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/ladder.svg b/assets/icons/game-icons/delapouite/ladder.svg new file mode 100644 index 00000000..04c0cdda --- /dev/null +++ b/assets/icons/game-icons/delapouite/ladder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/lovers.svg b/assets/icons/game-icons/delapouite/lovers.svg new file mode 100644 index 00000000..61f6aaf1 --- /dev/null +++ b/assets/icons/game-icons/delapouite/lovers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-axe.svg b/assets/icons/game-icons/delapouite/magic-axe.svg new file mode 100644 index 00000000..d3d736f7 --- /dev/null +++ b/assets/icons/game-icons/delapouite/magic-axe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-broom.svg b/assets/icons/game-icons/delapouite/magic-broom.svg new file mode 100644 index 00000000..f06fe3c2 --- /dev/null +++ b/assets/icons/game-icons/delapouite/magic-broom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-hat.svg b/assets/icons/game-icons/delapouite/magic-hat.svg new file mode 100644 index 00000000..856d0f67 --- /dev/null +++ b/assets/icons/game-icons/delapouite/magic-hat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magick-trick.svg b/assets/icons/game-icons/delapouite/magick-trick.svg new file mode 100644 index 00000000..84a7c5bb --- /dev/null +++ b/assets/icons/game-icons/delapouite/magick-trick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/misdirection.svg b/assets/icons/game-icons/delapouite/misdirection.svg new file mode 100644 index 00000000..9c32e290 --- /dev/null +++ b/assets/icons/game-icons/delapouite/misdirection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/mute.svg b/assets/icons/game-icons/delapouite/mute.svg new file mode 100644 index 00000000..21bbb11b --- /dev/null +++ b/assets/icons/game-icons/delapouite/mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/padlock-open.svg b/assets/icons/game-icons/delapouite/padlock-open.svg new file mode 100644 index 00000000..af907af8 --- /dev/null +++ b/assets/icons/game-icons/delapouite/padlock-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/pool-dive.svg b/assets/icons/game-icons/delapouite/pool-dive.svg new file mode 100644 index 00000000..83a46071 --- /dev/null +++ b/assets/icons/game-icons/delapouite/pool-dive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/potato.svg b/assets/icons/game-icons/delapouite/potato.svg new file mode 100644 index 00000000..94b7af18 --- /dev/null +++ b/assets/icons/game-icons/delapouite/potato.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/rusty-sword.svg b/assets/icons/game-icons/delapouite/rusty-sword.svg new file mode 100644 index 00000000..24b0bb73 --- /dev/null +++ b/assets/icons/game-icons/delapouite/rusty-sword.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/secret-door.svg b/assets/icons/game-icons/delapouite/secret-door.svg new file mode 100644 index 00000000..892f9d58 --- /dev/null +++ b/assets/icons/game-icons/delapouite/secret-door.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/shower.svg b/assets/icons/game-icons/delapouite/shower.svg new file mode 100644 index 00000000..434f8ed4 --- /dev/null +++ b/assets/icons/game-icons/delapouite/shower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/silenced.svg b/assets/icons/game-icons/delapouite/silenced.svg new file mode 100644 index 00000000..30652a0b --- /dev/null +++ b/assets/icons/game-icons/delapouite/silenced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/sparkles.svg b/assets/icons/game-icons/delapouite/sparkles.svg new file mode 100644 index 00000000..72603622 --- /dev/null +++ b/assets/icons/game-icons/delapouite/sparkles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/spy.svg b/assets/icons/game-icons/delapouite/spy.svg new file mode 100644 index 00000000..52d2268c --- /dev/null +++ b/assets/icons/game-icons/delapouite/spy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/steam.svg b/assets/icons/game-icons/delapouite/steam.svg new file mode 100644 index 00000000..84c00747 --- /dev/null +++ b/assets/icons/game-icons/delapouite/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/stone-wall.svg b/assets/icons/game-icons/delapouite/stone-wall.svg new file mode 100644 index 00000000..102ec28b --- /dev/null +++ b/assets/icons/game-icons/delapouite/stone-wall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/sun-spear.svg b/assets/icons/game-icons/delapouite/sun-spear.svg new file mode 100644 index 00000000..9a6ad57f --- /dev/null +++ b/assets/icons/game-icons/delapouite/sun-spear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/sunglasses.svg b/assets/icons/game-icons/delapouite/sunglasses.svg new file mode 100644 index 00000000..a5d6cf2e --- /dev/null +++ b/assets/icons/game-icons/delapouite/sunglasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/templar-shield.svg b/assets/icons/game-icons/delapouite/templar-shield.svg new file mode 100644 index 00000000..6cdfc0a4 --- /dev/null +++ b/assets/icons/game-icons/delapouite/templar-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/tightrope.svg b/assets/icons/game-icons/delapouite/tightrope.svg new file mode 100644 index 00000000..9de169cf --- /dev/null +++ b/assets/icons/game-icons/delapouite/tightrope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/two-coins.svg b/assets/icons/game-icons/delapouite/two-coins.svg new file mode 100644 index 00000000..28f0bb70 --- /dev/null +++ b/assets/icons/game-icons/delapouite/two-coins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/walk.svg b/assets/icons/game-icons/delapouite/walk.svg new file mode 100644 index 00000000..ae121c0f --- /dev/null +++ b/assets/icons/game-icons/delapouite/walk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg b/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg new file mode 100644 index 00000000..8fa69a7e --- /dev/null +++ b/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/heavenly-dog/catapult.svg b/assets/icons/game-icons/heavenly-dog/catapult.svg new file mode 100644 index 00000000..44c7b645 --- /dev/null +++ b/assets/icons/game-icons/heavenly-dog/catapult.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/angel-wings.svg b/assets/icons/game-icons/lorc/angel-wings.svg new file mode 100644 index 00000000..459cac41 --- /dev/null +++ b/assets/icons/game-icons/lorc/angel-wings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/aura.svg b/assets/icons/game-icons/lorc/aura.svg new file mode 100644 index 00000000..78e896f7 --- /dev/null +++ b/assets/icons/game-icons/lorc/aura.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/awareness.svg b/assets/icons/game-icons/lorc/awareness.svg new file mode 100644 index 00000000..e39fcf06 --- /dev/null +++ b/assets/icons/game-icons/lorc/awareness.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/beams-aura.svg b/assets/icons/game-icons/lorc/beams-aura.svg new file mode 100644 index 00000000..f49c9d5d --- /dev/null +++ b/assets/icons/game-icons/lorc/beams-aura.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/bell-shield.svg b/assets/icons/game-icons/lorc/bell-shield.svg new file mode 100644 index 00000000..0dbebf65 --- /dev/null +++ b/assets/icons/game-icons/lorc/bell-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/blade-fall.svg b/assets/icons/game-icons/lorc/blade-fall.svg new file mode 100644 index 00000000..94fe521d --- /dev/null +++ b/assets/icons/game-icons/lorc/blade-fall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/body-swapping.svg b/assets/icons/game-icons/lorc/body-swapping.svg new file mode 100644 index 00000000..258fc6b1 --- /dev/null +++ b/assets/icons/game-icons/lorc/body-swapping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/bubbling-beam.svg b/assets/icons/game-icons/lorc/bubbling-beam.svg new file mode 100644 index 00000000..fcb17a3e --- /dev/null +++ b/assets/icons/game-icons/lorc/bubbling-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/campfire.svg b/assets/icons/game-icons/lorc/campfire.svg new file mode 100644 index 00000000..2edc022e --- /dev/null +++ b/assets/icons/game-icons/lorc/campfire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/cash.svg b/assets/icons/game-icons/lorc/cash.svg new file mode 100644 index 00000000..883cb3e0 --- /dev/null +++ b/assets/icons/game-icons/lorc/cash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/chained-heart.svg b/assets/icons/game-icons/lorc/chained-heart.svg new file mode 100644 index 00000000..4cd31061 --- /dev/null +++ b/assets/icons/game-icons/lorc/chained-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/charm.svg b/assets/icons/game-icons/lorc/charm.svg new file mode 100644 index 00000000..2e7a4d9e --- /dev/null +++ b/assets/icons/game-icons/lorc/charm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/conversation.svg b/assets/icons/game-icons/lorc/conversation.svg new file mode 100644 index 00000000..b99a146c --- /dev/null +++ b/assets/icons/game-icons/lorc/conversation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/diamond-hard.svg b/assets/icons/game-icons/lorc/diamond-hard.svg new file mode 100644 index 00000000..0872ba38 --- /dev/null +++ b/assets/icons/game-icons/lorc/diamond-hard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/duality.svg b/assets/icons/game-icons/lorc/duality.svg new file mode 100644 index 00000000..9c535b50 --- /dev/null +++ b/assets/icons/game-icons/lorc/duality.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/earth-spit.svg b/assets/icons/game-icons/lorc/earth-spit.svg new file mode 100644 index 00000000..9c991a41 --- /dev/null +++ b/assets/icons/game-icons/lorc/earth-spit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/energy-arrow.svg b/assets/icons/game-icons/lorc/energy-arrow.svg new file mode 100644 index 00000000..5ca045d2 --- /dev/null +++ b/assets/icons/game-icons/lorc/energy-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/energy-breath.svg b/assets/icons/game-icons/lorc/energy-breath.svg new file mode 100644 index 00000000..04aa4c78 --- /dev/null +++ b/assets/icons/game-icons/lorc/energy-breath.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/envelope.svg b/assets/icons/game-icons/lorc/envelope.svg new file mode 100644 index 00000000..03886d5c --- /dev/null +++ b/assets/icons/game-icons/lorc/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/explosion-rays.svg b/assets/icons/game-icons/lorc/explosion-rays.svg new file mode 100644 index 00000000..350532ef --- /dev/null +++ b/assets/icons/game-icons/lorc/explosion-rays.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-breath.svg b/assets/icons/game-icons/lorc/fire-breath.svg new file mode 100644 index 00000000..03ea456e --- /dev/null +++ b/assets/icons/game-icons/lorc/fire-breath.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-ray-small.svg b/assets/icons/game-icons/lorc/fire-ray-small.svg new file mode 100644 index 00000000..93391343 --- /dev/null +++ b/assets/icons/game-icons/lorc/fire-ray-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-ray.svg b/assets/icons/game-icons/lorc/fire-ray.svg new file mode 100644 index 00000000..ce5d5307 --- /dev/null +++ b/assets/icons/game-icons/lorc/fire-ray.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-tail.svg b/assets/icons/game-icons/lorc/fire-tail.svg new file mode 100644 index 00000000..5e585476 --- /dev/null +++ b/assets/icons/game-icons/lorc/fire-tail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-wave.svg b/assets/icons/game-icons/lorc/fire-wave.svg new file mode 100644 index 00000000..89d16e50 --- /dev/null +++ b/assets/icons/game-icons/lorc/fire-wave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/foamy-disc.svg b/assets/icons/game-icons/lorc/foamy-disc.svg new file mode 100644 index 00000000..18f23e51 --- /dev/null +++ b/assets/icons/game-icons/lorc/foamy-disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fragrance.svg b/assets/icons/game-icons/lorc/fragrance.svg new file mode 100644 index 00000000..66e5095c --- /dev/null +++ b/assets/icons/game-icons/lorc/fragrance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/ghost-ally.svg b/assets/icons/game-icons/lorc/ghost-ally.svg new file mode 100644 index 00000000..9d68f44d --- /dev/null +++ b/assets/icons/game-icons/lorc/ghost-ally.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/glowing-hands.svg b/assets/icons/game-icons/lorc/glowing-hands.svg new file mode 100644 index 00000000..6128125e --- /dev/null +++ b/assets/icons/game-icons/lorc/glowing-hands.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/hammer-drop.svg b/assets/icons/game-icons/lorc/hammer-drop.svg new file mode 100644 index 00000000..098369a6 --- /dev/null +++ b/assets/icons/game-icons/lorc/hammer-drop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/heart-inside.svg b/assets/icons/game-icons/lorc/heart-inside.svg new file mode 100644 index 00000000..63cec26f --- /dev/null +++ b/assets/icons/game-icons/lorc/heart-inside.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/hidden.svg b/assets/icons/game-icons/lorc/hidden.svg new file mode 100644 index 00000000..65007dbf --- /dev/null +++ b/assets/icons/game-icons/lorc/hidden.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/icicles-aura.svg b/assets/icons/game-icons/lorc/icicles-aura.svg new file mode 100644 index 00000000..6aed9c96 --- /dev/null +++ b/assets/icons/game-icons/lorc/icicles-aura.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/ifrit.svg b/assets/icons/game-icons/lorc/ifrit.svg new file mode 100644 index 00000000..00818b97 --- /dev/null +++ b/assets/icons/game-icons/lorc/ifrit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/laser-precision.svg b/assets/icons/game-icons/lorc/laser-precision.svg new file mode 100644 index 00000000..1bb79ceb --- /dev/null +++ b/assets/icons/game-icons/lorc/laser-precision.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/laser-sparks.svg b/assets/icons/game-icons/lorc/laser-sparks.svg new file mode 100644 index 00000000..05f4fdf9 --- /dev/null +++ b/assets/icons/game-icons/lorc/laser-sparks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/lever.svg b/assets/icons/game-icons/lorc/lever.svg new file mode 100644 index 00000000..9b1eb174 --- /dev/null +++ b/assets/icons/game-icons/lorc/lever.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/lips.svg b/assets/icons/game-icons/lorc/lips.svg new file mode 100644 index 00000000..7980f4ed --- /dev/null +++ b/assets/icons/game-icons/lorc/lips.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mad-scientist.svg b/assets/icons/game-icons/lorc/mad-scientist.svg new file mode 100644 index 00000000..8a114f8f --- /dev/null +++ b/assets/icons/game-icons/lorc/mad-scientist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-palm.svg b/assets/icons/game-icons/lorc/magic-palm.svg new file mode 100644 index 00000000..24eff4e7 --- /dev/null +++ b/assets/icons/game-icons/lorc/magic-palm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-portal.svg b/assets/icons/game-icons/lorc/magic-portal.svg new file mode 100644 index 00000000..1a221ce7 --- /dev/null +++ b/assets/icons/game-icons/lorc/magic-portal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-swirl.svg b/assets/icons/game-icons/lorc/magic-swirl.svg new file mode 100644 index 00000000..f7cd61a1 --- /dev/null +++ b/assets/icons/game-icons/lorc/magic-swirl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magnifying-glass.svg b/assets/icons/game-icons/lorc/magnifying-glass.svg new file mode 100644 index 00000000..140fdbf2 --- /dev/null +++ b/assets/icons/game-icons/lorc/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/middle-arrow.svg b/assets/icons/game-icons/lorc/middle-arrow.svg new file mode 100644 index 00000000..4d049a75 --- /dev/null +++ b/assets/icons/game-icons/lorc/middle-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mine-explosion.svg b/assets/icons/game-icons/lorc/mine-explosion.svg new file mode 100644 index 00000000..e36b87b4 --- /dev/null +++ b/assets/icons/game-icons/lorc/mine-explosion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mirror-mirror.svg b/assets/icons/game-icons/lorc/mirror-mirror.svg new file mode 100644 index 00000000..d4baaf4e --- /dev/null +++ b/assets/icons/game-icons/lorc/mirror-mirror.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/omega.svg b/assets/icons/game-icons/lorc/omega.svg new file mode 100644 index 00000000..7090ee16 --- /dev/null +++ b/assets/icons/game-icons/lorc/omega.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/padlock.svg b/assets/icons/game-icons/lorc/padlock.svg new file mode 100644 index 00000000..ce43d14d --- /dev/null +++ b/assets/icons/game-icons/lorc/padlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/paw-heart.svg b/assets/icons/game-icons/lorc/paw-heart.svg new file mode 100644 index 00000000..2a0c6eb8 --- /dev/null +++ b/assets/icons/game-icons/lorc/paw-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/pointy-sword.svg b/assets/icons/game-icons/lorc/pointy-sword.svg new file mode 100644 index 00000000..481a2265 --- /dev/null +++ b/assets/icons/game-icons/lorc/pointy-sword.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/poison-bottle.svg b/assets/icons/game-icons/lorc/poison-bottle.svg new file mode 100644 index 00000000..a350ee72 --- /dev/null +++ b/assets/icons/game-icons/lorc/poison-bottle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/relationship-bounds.svg b/assets/icons/game-icons/lorc/relationship-bounds.svg new file mode 100644 index 00000000..e3dc11e6 --- /dev/null +++ b/assets/icons/game-icons/lorc/relationship-bounds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/run.svg b/assets/icons/game-icons/lorc/run.svg new file mode 100644 index 00000000..74ffbbef --- /dev/null +++ b/assets/icons/game-icons/lorc/run.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/rune-stone.svg b/assets/icons/game-icons/lorc/rune-stone.svg new file mode 100644 index 00000000..85085812 --- /dev/null +++ b/assets/icons/game-icons/lorc/rune-stone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shadow-follower.svg b/assets/icons/game-icons/lorc/shadow-follower.svg new file mode 100644 index 00000000..b05b9370 --- /dev/null +++ b/assets/icons/game-icons/lorc/shadow-follower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shard-sword.svg b/assets/icons/game-icons/lorc/shard-sword.svg new file mode 100644 index 00000000..e90afe6f --- /dev/null +++ b/assets/icons/game-icons/lorc/shard-sword.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shiny-omega.svg b/assets/icons/game-icons/lorc/shiny-omega.svg new file mode 100644 index 00000000..d56ae4f2 --- /dev/null +++ b/assets/icons/game-icons/lorc/shiny-omega.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sinusoidal-beam.svg b/assets/icons/game-icons/lorc/sinusoidal-beam.svg new file mode 100644 index 00000000..a89afeb4 --- /dev/null +++ b/assets/icons/game-icons/lorc/sinusoidal-beam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/skull-mask.svg b/assets/icons/game-icons/lorc/skull-mask.svg new file mode 100644 index 00000000..8c6f34c6 --- /dev/null +++ b/assets/icons/game-icons/lorc/skull-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sleepy.svg b/assets/icons/game-icons/lorc/sleepy.svg new file mode 100644 index 00000000..c78e5657 --- /dev/null +++ b/assets/icons/game-icons/lorc/sleepy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sliced-bread.svg b/assets/icons/game-icons/lorc/sliced-bread.svg new file mode 100644 index 00000000..edee650b --- /dev/null +++ b/assets/icons/game-icons/lorc/sliced-bread.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/smoking-orb.svg b/assets/icons/game-icons/lorc/smoking-orb.svg new file mode 100644 index 00000000..f4233bb7 --- /dev/null +++ b/assets/icons/game-icons/lorc/smoking-orb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/snail.svg b/assets/icons/game-icons/lorc/snail.svg new file mode 100644 index 00000000..a9422814 --- /dev/null +++ b/assets/icons/game-icons/lorc/snail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sparkling-sabre.svg b/assets/icons/game-icons/lorc/sparkling-sabre.svg new file mode 100644 index 00000000..00e20aa3 --- /dev/null +++ b/assets/icons/game-icons/lorc/sparkling-sabre.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/spear-hook.svg b/assets/icons/game-icons/lorc/spear-hook.svg new file mode 100644 index 00000000..f13d3c38 --- /dev/null +++ b/assets/icons/game-icons/lorc/spear-hook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/spider-web.svg b/assets/icons/game-icons/lorc/spider-web.svg new file mode 100644 index 00000000..a24a4524 --- /dev/null +++ b/assets/icons/game-icons/lorc/spider-web.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/static-guard.svg b/assets/icons/game-icons/lorc/static-guard.svg new file mode 100644 index 00000000..1f6f7231 --- /dev/null +++ b/assets/icons/game-icons/lorc/static-guard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sunbeams.svg b/assets/icons/game-icons/lorc/sunbeams.svg new file mode 100644 index 00000000..f86c8283 --- /dev/null +++ b/assets/icons/game-icons/lorc/sunbeams.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sword-wound.svg b/assets/icons/game-icons/lorc/sword-wound.svg new file mode 100644 index 00000000..ad480381 --- /dev/null +++ b/assets/icons/game-icons/lorc/sword-wound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/tear-tracks.svg b/assets/icons/game-icons/lorc/tear-tracks.svg new file mode 100644 index 00000000..676aabc0 --- /dev/null +++ b/assets/icons/game-icons/lorc/tear-tracks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/teleport.svg b/assets/icons/game-icons/lorc/teleport.svg new file mode 100644 index 00000000..d09575df --- /dev/null +++ b/assets/icons/game-icons/lorc/teleport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/terror.svg b/assets/icons/game-icons/lorc/terror.svg new file mode 100644 index 00000000..78b1aa91 --- /dev/null +++ b/assets/icons/game-icons/lorc/terror.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/time-trap.svg b/assets/icons/game-icons/lorc/time-trap.svg new file mode 100644 index 00000000..32911078 --- /dev/null +++ b/assets/icons/game-icons/lorc/time-trap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/tripwire.svg b/assets/icons/game-icons/lorc/tripwire.svg new file mode 100644 index 00000000..f4d804c1 --- /dev/null +++ b/assets/icons/game-icons/lorc/tripwire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/two-feathers.svg b/assets/icons/game-icons/lorc/two-feathers.svg new file mode 100644 index 00000000..b566db1d --- /dev/null +++ b/assets/icons/game-icons/lorc/two-feathers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/two-shadows.svg b/assets/icons/game-icons/lorc/two-shadows.svg new file mode 100644 index 00000000..cd1efbb5 --- /dev/null +++ b/assets/icons/game-icons/lorc/two-shadows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/uncertainty.svg b/assets/icons/game-icons/lorc/uncertainty.svg new file mode 100644 index 00000000..5b0625ba --- /dev/null +++ b/assets/icons/game-icons/lorc/uncertainty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/virus.svg b/assets/icons/game-icons/lorc/virus.svg new file mode 100644 index 00000000..1ef38f46 --- /dev/null +++ b/assets/icons/game-icons/lorc/virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/voodoo-doll.svg b/assets/icons/game-icons/lorc/voodoo-doll.svg new file mode 100644 index 00000000..642349d0 --- /dev/null +++ b/assets/icons/game-icons/lorc/voodoo-doll.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/wolf-trap.svg b/assets/icons/game-icons/lorc/wolf-trap.svg new file mode 100644 index 00000000..a2c545f7 --- /dev/null +++ b/assets/icons/game-icons/lorc/wolf-trap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/sbed/health-normal.svg b/assets/icons/game-icons/sbed/health-normal.svg new file mode 100644 index 00000000..e8cade05 --- /dev/null +++ b/assets/icons/game-icons/sbed/health-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/sbed/shield.svg b/assets/icons/game-icons/sbed/shield.svg new file mode 100644 index 00000000..595de042 --- /dev/null +++ b/assets/icons/game-icons/sbed/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/sbed/weight-crush.svg b/assets/icons/game-icons/sbed/weight-crush.svg new file mode 100644 index 00000000..c0fb8132 --- /dev/null +++ b/assets/icons/game-icons/sbed/weight-crush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/blood.svg b/assets/icons/game-icons/skoll/blood.svg new file mode 100644 index 00000000..2051637d --- /dev/null +++ b/assets/icons/game-icons/skoll/blood.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/halt.svg b/assets/icons/game-icons/skoll/halt.svg new file mode 100644 index 00000000..68a70756 --- /dev/null +++ b/assets/icons/game-icons/skoll/halt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/pentacle.svg b/assets/icons/game-icons/skoll/pentacle.svg new file mode 100644 index 00000000..a7bd85e0 --- /dev/null +++ b/assets/icons/game-icons/skoll/pentacle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/raise-skeleton.svg b/assets/icons/game-icons/skoll/raise-skeleton.svg new file mode 100644 index 00000000..fee9e834 --- /dev/null +++ b/assets/icons/game-icons/skoll/raise-skeleton.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/raise-zombie.svg b/assets/icons/game-icons/skoll/raise-zombie.svg new file mode 100644 index 00000000..746e30f6 --- /dev/null +++ b/assets/icons/game-icons/skoll/raise-zombie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/willdabeast/chain-lightning.svg b/assets/icons/game-icons/willdabeast/chain-lightning.svg new file mode 100644 index 00000000..5b5e005e --- /dev/null +++ b/assets/icons/game-icons/willdabeast/chain-lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/game-icons/willdabeast/chain-mail.svg b/assets/icons/game-icons/willdabeast/chain-mail.svg new file mode 100644 index 00000000..cfa5c5ef --- /dev/null +++ b/assets/icons/game-icons/willdabeast/chain-mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/official/DS4-DEF.png b/assets/icons/official/combat-values/defense.png similarity index 100% rename from src/assets/official/DS4-DEF.png rename to assets/icons/official/combat-values/defense.png diff --git a/src/assets/official/DS4-HP.png b/assets/icons/official/combat-values/hit-points.png similarity index 100% rename from src/assets/official/DS4-HP.png rename to assets/icons/official/combat-values/hit-points.png diff --git a/src/assets/official/DS4-INI.png b/assets/icons/official/combat-values/initiative.png similarity index 100% rename from src/assets/official/DS4-INI.png rename to assets/icons/official/combat-values/initiative.png diff --git a/src/assets/official/DS4-MAT.png b/assets/icons/official/combat-values/melee-attack.png similarity index 100% rename from src/assets/official/DS4-MAT.png rename to assets/icons/official/combat-values/melee-attack.png diff --git a/src/assets/official/DS4-MRA.png b/assets/icons/official/combat-values/melee-ranged-attack.png similarity index 100% rename from src/assets/official/DS4-MRA.png rename to assets/icons/official/combat-values/melee-ranged-attack.png diff --git a/src/assets/official/DS4-MR.png b/assets/icons/official/combat-values/movement-rate.png similarity index 100% rename from src/assets/official/DS4-MR.png rename to assets/icons/official/combat-values/movement-rate.png diff --git a/src/assets/official/DS4-RAT.png b/assets/icons/official/combat-values/ranged-attack.png similarity index 100% rename from src/assets/official/DS4-RAT.png rename to assets/icons/official/combat-values/ranged-attack.png diff --git a/src/assets/official/DS4-SPC.png b/assets/icons/official/combat-values/spellcasting.png similarity index 100% rename from src/assets/official/DS4-SPC.png rename to assets/icons/official/combat-values/spellcasting.png diff --git a/src/assets/official/DS4-TSC.png b/assets/icons/official/combat-values/targeted-spellcasting.png similarity index 100% rename from src/assets/official/DS4-TSC.png rename to assets/icons/official/combat-values/targeted-spellcasting.png diff --git a/assets/icons/official/special-creature-abilities/aging.png b/assets/icons/official/special-creature-abilities/aging.png new file mode 100644 index 00000000..2f752f08 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/aging.png differ diff --git a/assets/icons/official/special-creature-abilities/anti-magic.png b/assets/icons/official/special-creature-abilities/anti-magic.png new file mode 100644 index 00000000..3253bfe4 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/anti-magic.png differ diff --git a/assets/icons/official/special-creature-abilities/attribute-loss.png b/assets/icons/official/special-creature-abilities/attribute-loss.png new file mode 100644 index 00000000..9ea5da6a Binary files /dev/null and b/assets/icons/official/special-creature-abilities/attribute-loss.png differ diff --git a/assets/icons/official/special-creature-abilities/breath-weapon.png b/assets/icons/official/special-creature-abilities/breath-weapon.png new file mode 100644 index 00000000..f11467aa Binary files /dev/null and b/assets/icons/official/special-creature-abilities/breath-weapon.png differ diff --git a/assets/icons/official/special-creature-abilities/charge.png b/assets/icons/official/special-creature-abilities/charge.png new file mode 100644 index 00000000..e9bd8925 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/charge.png differ diff --git a/assets/icons/official/special-creature-abilities/charm.png b/assets/icons/official/special-creature-abilities/charm.png new file mode 100644 index 00000000..df071f3c Binary files /dev/null and b/assets/icons/official/special-creature-abilities/charm.png differ diff --git a/assets/icons/official/special-creature-abilities/climber.png b/assets/icons/official/special-creature-abilities/climber.png new file mode 100644 index 00000000..ed3047b0 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/climber.png differ diff --git a/assets/icons/official/special-creature-abilities/creature-of-darkness.png b/assets/icons/official/special-creature-abilities/creature-of-darkness.png new file mode 100644 index 00000000..0e9640d1 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/creature-of-darkness.png differ diff --git a/assets/icons/official/special-creature-abilities/creature-of-light.png b/assets/icons/official/special-creature-abilities/creature-of-light.png new file mode 100644 index 00000000..b4d9f681 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/creature-of-light.png differ diff --git a/assets/icons/official/special-creature-abilities/crush.png b/assets/icons/official/special-creature-abilities/crush.png new file mode 100644 index 00000000..3204c519 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/crush.png differ diff --git a/assets/icons/official/special-creature-abilities/darkvision.png b/assets/icons/official/special-creature-abilities/darkvision.png new file mode 100644 index 00000000..6ff47a66 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/darkvision.png differ diff --git a/assets/icons/official/special-creature-abilities/devourer.png b/assets/icons/official/special-creature-abilities/devourer.png new file mode 100644 index 00000000..defbe0ab Binary files /dev/null and b/assets/icons/official/special-creature-abilities/devourer.png differ diff --git a/assets/icons/official/special-creature-abilities/dive-attack.png b/assets/icons/official/special-creature-abilities/dive-attack.png new file mode 100644 index 00000000..7a413246 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/dive-attack.png differ diff --git a/assets/icons/official/special-creature-abilities/entangle.png b/assets/icons/official/special-creature-abilities/entangle.png new file mode 100644 index 00000000..50a85350 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/entangle.png differ diff --git a/assets/icons/official/special-creature-abilities/fear.png b/assets/icons/official/special-creature-abilities/fear.png new file mode 100644 index 00000000..7fe82bed Binary files /dev/null and b/assets/icons/official/special-creature-abilities/fear.png differ diff --git a/assets/icons/official/special-creature-abilities/flight.png b/assets/icons/official/special-creature-abilities/flight.png new file mode 100644 index 00000000..5340989c Binary files /dev/null and b/assets/icons/official/special-creature-abilities/flight.png differ diff --git a/assets/icons/official/special-creature-abilities/flinging.png b/assets/icons/official/special-creature-abilities/flinging.png new file mode 100644 index 00000000..396ff8cd Binary files /dev/null and b/assets/icons/official/special-creature-abilities/flinging.png differ diff --git a/assets/icons/official/special-creature-abilities/gaze-attack.png b/assets/icons/official/special-creature-abilities/gaze-attack.png new file mode 100644 index 00000000..bf2b6814 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/gaze-attack.png differ diff --git a/assets/icons/official/special-creature-abilities/hover.png b/assets/icons/official/special-creature-abilities/hover.png new file mode 100644 index 00000000..bca9f6da Binary files /dev/null and b/assets/icons/official/special-creature-abilities/hover.png differ diff --git a/assets/icons/official/special-creature-abilities/mind-immunity.png b/assets/icons/official/special-creature-abilities/mind-immunity.png new file mode 100644 index 00000000..3a950c29 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/mind-immunity.png differ diff --git a/assets/icons/official/special-creature-abilities/multiple-attacks.png b/assets/icons/official/special-creature-abilities/multiple-attacks.png new file mode 100644 index 00000000..a1d0769f Binary files /dev/null and b/assets/icons/official/special-creature-abilities/multiple-attacks.png differ diff --git a/assets/icons/official/special-creature-abilities/multiple-limbs.png b/assets/icons/official/special-creature-abilities/multiple-limbs.png new file mode 100644 index 00000000..98307bbf Binary files /dev/null and b/assets/icons/official/special-creature-abilities/multiple-limbs.png differ diff --git a/assets/icons/official/special-creature-abilities/natural-weapons.png b/assets/icons/official/special-creature-abilities/natural-weapons.png new file mode 100644 index 00000000..67f78917 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/natural-weapons.png differ diff --git a/assets/icons/official/special-creature-abilities/night-vision.png b/assets/icons/official/special-creature-abilities/night-vision.png new file mode 100644 index 00000000..93ac02b4 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/night-vision.png differ diff --git a/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png b/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png new file mode 100644 index 00000000..a118dee9 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png differ diff --git a/assets/icons/official/special-creature-abilities/paralysis-effect.png b/assets/icons/official/special-creature-abilities/paralysis-effect.png new file mode 100644 index 00000000..670bac3e Binary files /dev/null and b/assets/icons/official/special-creature-abilities/paralysis-effect.png differ diff --git a/assets/icons/official/special-creature-abilities/petrification.png b/assets/icons/official/special-creature-abilities/petrification.png new file mode 100644 index 00000000..72b47af8 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/petrification.png differ diff --git a/assets/icons/official/special-creature-abilities/poison.png b/assets/icons/official/special-creature-abilities/poison.png new file mode 100644 index 00000000..d4a9fda0 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/poison.png differ diff --git a/assets/icons/official/special-creature-abilities/power-of-the-dead.png b/assets/icons/official/special-creature-abilities/power-of-the-dead.png new file mode 100644 index 00000000..a4b0425b Binary files /dev/null and b/assets/icons/official/special-creature-abilities/power-of-the-dead.png differ diff --git a/assets/icons/official/special-creature-abilities/regeneration.png b/assets/icons/official/special-creature-abilities/regeneration.png new file mode 100644 index 00000000..1d030a91 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/regeneration.png differ diff --git a/assets/icons/official/special-creature-abilities/rust.png b/assets/icons/official/special-creature-abilities/rust.png new file mode 100644 index 00000000..b4cd333f Binary files /dev/null and b/assets/icons/official/special-creature-abilities/rust.png differ diff --git a/assets/icons/official/special-creature-abilities/sonar.png b/assets/icons/official/special-creature-abilities/sonar.png new file mode 100644 index 00000000..39f8e9ce Binary files /dev/null and b/assets/icons/official/special-creature-abilities/sonar.png differ diff --git a/assets/icons/official/special-creature-abilities/susceptible.png b/assets/icons/official/special-creature-abilities/susceptible.png new file mode 100644 index 00000000..f2696bf8 Binary files /dev/null and b/assets/icons/official/special-creature-abilities/susceptible.png differ diff --git a/assets/icons/official/special-creature-abilities/swarm.png b/assets/icons/official/special-creature-abilities/swarm.png new file mode 100644 index 00000000..1de8b20a Binary files /dev/null and b/assets/icons/official/special-creature-abilities/swarm.png differ diff --git a/assets/icons/official/special-creature-abilities/swim.png b/assets/icons/official/special-creature-abilities/swim.png new file mode 100644 index 00000000..5fb30ffa Binary files /dev/null and b/assets/icons/official/special-creature-abilities/swim.png differ diff --git a/assets/tokens/devin-night/alligator-green.png b/assets/tokens/devin-night/alligator-green.png new file mode 100644 index 00000000..b8bec32f Binary files /dev/null and b/assets/tokens/devin-night/alligator-green.png differ diff --git a/assets/tokens/devin-night/alligator-olive.png b/assets/tokens/devin-night/alligator-olive.png new file mode 100644 index 00000000..05859b74 Binary files /dev/null and b/assets/tokens/devin-night/alligator-olive.png differ diff --git a/assets/tokens/devin-night/basilisk-green.png b/assets/tokens/devin-night/basilisk-green.png new file mode 100644 index 00000000..c660d43a Binary files /dev/null and b/assets/tokens/devin-night/basilisk-green.png differ diff --git a/assets/tokens/devin-night/basilisk-purple.png b/assets/tokens/devin-night/basilisk-purple.png new file mode 100644 index 00000000..7f33089e Binary files /dev/null and b/assets/tokens/devin-night/basilisk-purple.png differ diff --git a/assets/tokens/devin-night/bear-1.png b/assets/tokens/devin-night/bear-1.png new file mode 100644 index 00000000..ecea9d97 Binary files /dev/null and b/assets/tokens/devin-night/bear-1.png differ diff --git a/assets/tokens/devin-night/bear-2.png b/assets/tokens/devin-night/bear-2.png new file mode 100644 index 00000000..362862ce Binary files /dev/null and b/assets/tokens/devin-night/bear-2.png differ diff --git a/assets/tokens/devin-night/boar-brown-1.png b/assets/tokens/devin-night/boar-brown-1.png new file mode 100644 index 00000000..5a50d1b3 Binary files /dev/null and b/assets/tokens/devin-night/boar-brown-1.png differ diff --git a/assets/tokens/devin-night/boar-brown-2.png b/assets/tokens/devin-night/boar-brown-2.png new file mode 100644 index 00000000..ec6a07aa Binary files /dev/null and b/assets/tokens/devin-night/boar-brown-2.png differ diff --git a/assets/tokens/devin-night/boar-greenish-1.png b/assets/tokens/devin-night/boar-greenish-1.png new file mode 100644 index 00000000..c64f246b Binary files /dev/null and b/assets/tokens/devin-night/boar-greenish-1.png differ diff --git a/assets/tokens/devin-night/boar-greenish-2.png b/assets/tokens/devin-night/boar-greenish-2.png new file mode 100644 index 00000000..cbe7d293 Binary files /dev/null and b/assets/tokens/devin-night/boar-greenish-2.png differ diff --git a/assets/tokens/devin-night/dog-hound.png b/assets/tokens/devin-night/dog-hound.png new file mode 100644 index 00000000..eeff4588 Binary files /dev/null and b/assets/tokens/devin-night/dog-hound.png differ diff --git a/assets/tokens/devin-night/dog-pitbull-1.png b/assets/tokens/devin-night/dog-pitbull-1.png new file mode 100644 index 00000000..2db59b40 Binary files /dev/null and b/assets/tokens/devin-night/dog-pitbull-1.png differ diff --git a/assets/tokens/devin-night/dog-pitbull-2.png b/assets/tokens/devin-night/dog-pitbull-2.png new file mode 100644 index 00000000..0488fdbd Binary files /dev/null and b/assets/tokens/devin-night/dog-pitbull-2.png differ diff --git a/assets/tokens/devin-night/dog-small.png b/assets/tokens/devin-night/dog-small.png new file mode 100644 index 00000000..32bffbd3 Binary files /dev/null and b/assets/tokens/devin-night/dog-small.png differ diff --git a/assets/tokens/devin-night/dog-wolfhound.png b/assets/tokens/devin-night/dog-wolfhound.png new file mode 100644 index 00000000..d6cfc0a3 Binary files /dev/null and b/assets/tokens/devin-night/dog-wolfhound.png differ diff --git a/assets/tokens/devin-night/dragon-black.png b/assets/tokens/devin-night/dragon-black.png new file mode 100644 index 00000000..3e5ee80b Binary files /dev/null and b/assets/tokens/devin-night/dragon-black.png differ diff --git a/assets/tokens/devin-night/dragon-blue.png b/assets/tokens/devin-night/dragon-blue.png new file mode 100644 index 00000000..2cc1ee3e Binary files /dev/null and b/assets/tokens/devin-night/dragon-blue.png differ diff --git a/assets/tokens/devin-night/dragon-bronze.png b/assets/tokens/devin-night/dragon-bronze.png new file mode 100644 index 00000000..85645354 Binary files /dev/null and b/assets/tokens/devin-night/dragon-bronze.png differ diff --git a/assets/tokens/devin-night/dragon-gold.png b/assets/tokens/devin-night/dragon-gold.png new file mode 100644 index 00000000..6a1fe695 Binary files /dev/null and b/assets/tokens/devin-night/dragon-gold.png differ diff --git a/assets/tokens/devin-night/dragon-green.png b/assets/tokens/devin-night/dragon-green.png new file mode 100644 index 00000000..0c563d50 Binary files /dev/null and b/assets/tokens/devin-night/dragon-green.png differ diff --git a/assets/tokens/devin-night/dragon-red.png b/assets/tokens/devin-night/dragon-red.png new file mode 100644 index 00000000..68eb2dd7 Binary files /dev/null and b/assets/tokens/devin-night/dragon-red.png differ diff --git a/assets/tokens/devin-night/dragon-silver.png b/assets/tokens/devin-night/dragon-silver.png new file mode 100644 index 00000000..9e823482 Binary files /dev/null and b/assets/tokens/devin-night/dragon-silver.png differ diff --git a/assets/tokens/devin-night/dragon-white.png b/assets/tokens/devin-night/dragon-white.png new file mode 100644 index 00000000..f65d82d3 Binary files /dev/null and b/assets/tokens/devin-night/dragon-white.png differ diff --git a/assets/tokens/devin-night/dragon-yellow.png b/assets/tokens/devin-night/dragon-yellow.png new file mode 100644 index 00000000..1ddae600 Binary files /dev/null and b/assets/tokens/devin-night/dragon-yellow.png differ diff --git a/assets/tokens/devin-night/eagle.png b/assets/tokens/devin-night/eagle.png new file mode 100644 index 00000000..5d63efe3 Binary files /dev/null and b/assets/tokens/devin-night/eagle.png differ diff --git a/assets/tokens/devin-night/feline-predator-dire-tiger.png b/assets/tokens/devin-night/feline-predator-dire-tiger.png new file mode 100644 index 00000000..08f2724d Binary files /dev/null and b/assets/tokens/devin-night/feline-predator-dire-tiger.png differ diff --git a/assets/tokens/devin-night/feline-predator-panther.png b/assets/tokens/devin-night/feline-predator-panther.png new file mode 100644 index 00000000..ea76bc1d Binary files /dev/null and b/assets/tokens/devin-night/feline-predator-panther.png differ diff --git a/assets/tokens/devin-night/feline-predator-tiger-dark.png b/assets/tokens/devin-night/feline-predator-tiger-dark.png new file mode 100644 index 00000000..a3eee59d Binary files /dev/null and b/assets/tokens/devin-night/feline-predator-tiger-dark.png differ diff --git a/assets/tokens/devin-night/feline-predator-tiger.png b/assets/tokens/devin-night/feline-predator-tiger.png new file mode 100644 index 00000000..6b565ae8 Binary files /dev/null and b/assets/tokens/devin-night/feline-predator-tiger.png differ diff --git a/assets/tokens/devin-night/gargoyle-gray.png b/assets/tokens/devin-night/gargoyle-gray.png new file mode 100644 index 00000000..62f344a7 Binary files /dev/null and b/assets/tokens/devin-night/gargoyle-gray.png differ diff --git a/assets/tokens/devin-night/gargoyle-white.png b/assets/tokens/devin-night/gargoyle-white.png new file mode 100644 index 00000000..91632950 Binary files /dev/null and b/assets/tokens/devin-night/gargoyle-white.png differ diff --git a/assets/tokens/devin-night/ghost-1.png b/assets/tokens/devin-night/ghost-1.png new file mode 100644 index 00000000..1f538015 Binary files /dev/null and b/assets/tokens/devin-night/ghost-1.png differ diff --git a/assets/tokens/devin-night/ghost-2.png b/assets/tokens/devin-night/ghost-2.png new file mode 100644 index 00000000..e7207061 Binary files /dev/null and b/assets/tokens/devin-night/ghost-2.png differ diff --git a/assets/tokens/devin-night/giant-lizard-gray.png b/assets/tokens/devin-night/giant-lizard-gray.png new file mode 100644 index 00000000..6545473f Binary files /dev/null and b/assets/tokens/devin-night/giant-lizard-gray.png differ diff --git a/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png b/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png new file mode 100644 index 00000000..66599e1d Binary files /dev/null and b/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png differ diff --git a/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png b/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png new file mode 100644 index 00000000..1d4bfe4e Binary files /dev/null and b/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png differ diff --git a/assets/tokens/devin-night/giant-lizard-olive.png b/assets/tokens/devin-night/giant-lizard-olive.png new file mode 100644 index 00000000..be23cb27 Binary files /dev/null and b/assets/tokens/devin-night/giant-lizard-olive.png differ diff --git a/assets/tokens/devin-night/giant-lizard-purple.png b/assets/tokens/devin-night/giant-lizard-purple.png new file mode 100644 index 00000000..520395b5 Binary files /dev/null and b/assets/tokens/devin-night/giant-lizard-purple.png differ diff --git a/assets/tokens/devin-night/giant-rat-brown.png b/assets/tokens/devin-night/giant-rat-brown.png new file mode 100644 index 00000000..b82b6224 Binary files /dev/null and b/assets/tokens/devin-night/giant-rat-brown.png differ diff --git a/assets/tokens/devin-night/giant-rat-gray.png b/assets/tokens/devin-night/giant-rat-gray.png new file mode 100644 index 00000000..533c950d Binary files /dev/null and b/assets/tokens/devin-night/giant-rat-gray.png differ diff --git a/assets/tokens/devin-night/giant-snake-brown.png b/assets/tokens/devin-night/giant-snake-brown.png new file mode 100644 index 00000000..15817361 Binary files /dev/null and b/assets/tokens/devin-night/giant-snake-brown.png differ diff --git a/assets/tokens/devin-night/giant-snake-green.png b/assets/tokens/devin-night/giant-snake-green.png new file mode 100644 index 00000000..f00402e9 Binary files /dev/null and b/assets/tokens/devin-night/giant-snake-green.png differ diff --git a/assets/tokens/devin-night/goblin-branch-brown-hair.png b/assets/tokens/devin-night/goblin-branch-brown-hair.png new file mode 100644 index 00000000..92b83d8c Binary files /dev/null and b/assets/tokens/devin-night/goblin-branch-brown-hair.png differ diff --git a/assets/tokens/devin-night/goblin-branch-purple-hair.png b/assets/tokens/devin-night/goblin-branch-purple-hair.png new file mode 100644 index 00000000..859dcfc7 Binary files /dev/null and b/assets/tokens/devin-night/goblin-branch-purple-hair.png differ diff --git a/assets/tokens/devin-night/goblin-knife.png b/assets/tokens/devin-night/goblin-knife.png new file mode 100644 index 00000000..7dc703da Binary files /dev/null and b/assets/tokens/devin-night/goblin-knife.png differ diff --git a/assets/tokens/devin-night/harpy-brown.png b/assets/tokens/devin-night/harpy-brown.png new file mode 100644 index 00000000..d1962cdc Binary files /dev/null and b/assets/tokens/devin-night/harpy-brown.png differ diff --git a/assets/tokens/devin-night/harpy-pruple.png b/assets/tokens/devin-night/harpy-pruple.png new file mode 100644 index 00000000..2d41b5e9 Binary files /dev/null and b/assets/tokens/devin-night/harpy-pruple.png differ diff --git a/assets/tokens/devin-night/hobgoblin-bow-blue.png b/assets/tokens/devin-night/hobgoblin-bow-blue.png new file mode 100644 index 00000000..ad93d9d3 Binary files /dev/null and b/assets/tokens/devin-night/hobgoblin-bow-blue.png differ diff --git a/assets/tokens/devin-night/hobgoblin-bow-green.png b/assets/tokens/devin-night/hobgoblin-bow-green.png new file mode 100644 index 00000000..731e9dd0 Binary files /dev/null and b/assets/tokens/devin-night/hobgoblin-bow-green.png differ diff --git a/assets/tokens/devin-night/hobgoblin-sword-naked.png b/assets/tokens/devin-night/hobgoblin-sword-naked.png new file mode 100644 index 00000000..c2f9e13c Binary files /dev/null and b/assets/tokens/devin-night/hobgoblin-sword-naked.png differ diff --git a/assets/tokens/devin-night/hobgoblin-sword-purple.png b/assets/tokens/devin-night/hobgoblin-sword-purple.png new file mode 100644 index 00000000..37ab7728 Binary files /dev/null and b/assets/tokens/devin-night/hobgoblin-sword-purple.png differ diff --git a/assets/tokens/devin-night/horse-black.png b/assets/tokens/devin-night/horse-black.png new file mode 100644 index 00000000..8ee08ace Binary files /dev/null and b/assets/tokens/devin-night/horse-black.png differ diff --git a/assets/tokens/devin-night/horse-brown.png b/assets/tokens/devin-night/horse-brown.png new file mode 100644 index 00000000..215ff507 Binary files /dev/null and b/assets/tokens/devin-night/horse-brown.png differ diff --git a/assets/tokens/devin-night/horse-white-brown.png b/assets/tokens/devin-night/horse-white-brown.png new file mode 100644 index 00000000..4e1465ab Binary files /dev/null and b/assets/tokens/devin-night/horse-white-brown.png differ diff --git a/assets/tokens/devin-night/horse-white.png b/assets/tokens/devin-night/horse-white.png new file mode 100644 index 00000000..130f39c2 Binary files /dev/null and b/assets/tokens/devin-night/horse-white.png differ diff --git a/assets/tokens/devin-night/hydra-blue.png b/assets/tokens/devin-night/hydra-blue.png new file mode 100644 index 00000000..a7539e2b Binary files /dev/null and b/assets/tokens/devin-night/hydra-blue.png differ diff --git a/assets/tokens/devin-night/hydra-purple.png b/assets/tokens/devin-night/hydra-purple.png new file mode 100644 index 00000000..d36961e3 Binary files /dev/null and b/assets/tokens/devin-night/hydra-purple.png differ diff --git a/assets/tokens/devin-night/kobold-green.png b/assets/tokens/devin-night/kobold-green.png new file mode 100644 index 00000000..b7c90a6e Binary files /dev/null and b/assets/tokens/devin-night/kobold-green.png differ diff --git a/assets/tokens/devin-night/kobold-red.png b/assets/tokens/devin-night/kobold-red.png new file mode 100644 index 00000000..75f7cf77 Binary files /dev/null and b/assets/tokens/devin-night/kobold-red.png differ diff --git a/assets/tokens/devin-night/lich.png b/assets/tokens/devin-night/lich.png new file mode 100644 index 00000000..9e1166b0 Binary files /dev/null and b/assets/tokens/devin-night/lich.png differ diff --git a/assets/tokens/devin-night/lizard-man-brown.png b/assets/tokens/devin-night/lizard-man-brown.png new file mode 100644 index 00000000..02eabb3c Binary files /dev/null and b/assets/tokens/devin-night/lizard-man-brown.png differ diff --git a/assets/tokens/devin-night/lizard-man-gray.png b/assets/tokens/devin-night/lizard-man-gray.png new file mode 100644 index 00000000..b970ecca Binary files /dev/null and b/assets/tokens/devin-night/lizard-man-gray.png differ diff --git a/assets/tokens/devin-night/lizard-man-green-bright.png b/assets/tokens/devin-night/lizard-man-green-bright.png new file mode 100644 index 00000000..434230b9 Binary files /dev/null and b/assets/tokens/devin-night/lizard-man-green-bright.png differ diff --git a/assets/tokens/devin-night/lizard-man-green-dark.png b/assets/tokens/devin-night/lizard-man-green-dark.png new file mode 100644 index 00000000..4cd6ce1b Binary files /dev/null and b/assets/tokens/devin-night/lizard-man-green-dark.png differ diff --git a/assets/tokens/devin-night/lizard-man-purple.png b/assets/tokens/devin-night/lizard-man-purple.png new file mode 100644 index 00000000..6b77e41d Binary files /dev/null and b/assets/tokens/devin-night/lizard-man-purple.png differ diff --git a/assets/tokens/devin-night/medusa-pale.png b/assets/tokens/devin-night/medusa-pale.png new file mode 100644 index 00000000..29e75e9f Binary files /dev/null and b/assets/tokens/devin-night/medusa-pale.png differ diff --git a/assets/tokens/devin-night/medusa-red.png b/assets/tokens/devin-night/medusa-red.png new file mode 100644 index 00000000..402b4f00 Binary files /dev/null and b/assets/tokens/devin-night/medusa-red.png differ diff --git a/assets/tokens/devin-night/minotaur-balck.png b/assets/tokens/devin-night/minotaur-balck.png new file mode 100644 index 00000000..47416703 Binary files /dev/null and b/assets/tokens/devin-night/minotaur-balck.png differ diff --git a/assets/tokens/devin-night/minotaur-brown-braid.png b/assets/tokens/devin-night/minotaur-brown-braid.png new file mode 100644 index 00000000..5e9c8cb8 Binary files /dev/null and b/assets/tokens/devin-night/minotaur-brown-braid.png differ diff --git a/assets/tokens/devin-night/minotaur-brown.png b/assets/tokens/devin-night/minotaur-brown.png new file mode 100644 index 00000000..bc2eeb1b Binary files /dev/null and b/assets/tokens/devin-night/minotaur-brown.png differ diff --git a/assets/tokens/devin-night/monster-spider.png b/assets/tokens/devin-night/monster-spider.png new file mode 100644 index 00000000..a4e1ac63 Binary files /dev/null and b/assets/tokens/devin-night/monster-spider.png differ diff --git a/assets/tokens/devin-night/nether-wolf.png b/assets/tokens/devin-night/nether-wolf.png new file mode 100644 index 00000000..954e5f47 Binary files /dev/null and b/assets/tokens/devin-night/nether-wolf.png differ diff --git a/assets/tokens/devin-night/ogre-blue.png b/assets/tokens/devin-night/ogre-blue.png new file mode 100644 index 00000000..d70aa03d Binary files /dev/null and b/assets/tokens/devin-night/ogre-blue.png differ diff --git a/assets/tokens/devin-night/ogre-brown.png b/assets/tokens/devin-night/ogre-brown.png new file mode 100644 index 00000000..2cfc8998 Binary files /dev/null and b/assets/tokens/devin-night/ogre-brown.png differ diff --git a/assets/tokens/devin-night/ogre-gray.png b/assets/tokens/devin-night/ogre-gray.png new file mode 100644 index 00000000..5bcff600 Binary files /dev/null and b/assets/tokens/devin-night/ogre-gray.png differ diff --git a/assets/tokens/devin-night/orc-blue.png b/assets/tokens/devin-night/orc-blue.png new file mode 100644 index 00000000..9d90b089 Binary files /dev/null and b/assets/tokens/devin-night/orc-blue.png differ diff --git a/assets/tokens/devin-night/orc-red.png b/assets/tokens/devin-night/orc-red.png new file mode 100644 index 00000000..a352f61a Binary files /dev/null and b/assets/tokens/devin-night/orc-red.png differ diff --git a/assets/tokens/devin-night/owldritch-brown.png b/assets/tokens/devin-night/owldritch-brown.png new file mode 100644 index 00000000..96c122e4 Binary files /dev/null and b/assets/tokens/devin-night/owldritch-brown.png differ diff --git a/assets/tokens/devin-night/owldritch-tan.png b/assets/tokens/devin-night/owldritch-tan.png new file mode 100644 index 00000000..76945460 Binary files /dev/null and b/assets/tokens/devin-night/owldritch-tan.png differ diff --git a/assets/tokens/devin-night/rat-brown-1.png b/assets/tokens/devin-night/rat-brown-1.png new file mode 100644 index 00000000..31a39f7f Binary files /dev/null and b/assets/tokens/devin-night/rat-brown-1.png differ diff --git a/assets/tokens/devin-night/rat-brown-2.png b/assets/tokens/devin-night/rat-brown-2.png new file mode 100644 index 00000000..781067e3 Binary files /dev/null and b/assets/tokens/devin-night/rat-brown-2.png differ diff --git a/assets/tokens/devin-night/rat-gray.png b/assets/tokens/devin-night/rat-gray.png new file mode 100644 index 00000000..600b58da Binary files /dev/null and b/assets/tokens/devin-night/rat-gray.png differ diff --git a/assets/tokens/devin-night/rat-tan.png b/assets/tokens/devin-night/rat-tan.png new file mode 100644 index 00000000..2b3766dd Binary files /dev/null and b/assets/tokens/devin-night/rat-tan.png differ diff --git a/assets/tokens/devin-night/rust-bug.png b/assets/tokens/devin-night/rust-bug.png new file mode 100644 index 00000000..dd32e839 Binary files /dev/null and b/assets/tokens/devin-night/rust-bug.png differ diff --git a/assets/tokens/devin-night/shadow.png b/assets/tokens/devin-night/shadow.png new file mode 100644 index 00000000..a3d598c0 Binary files /dev/null and b/assets/tokens/devin-night/shadow.png differ diff --git a/assets/tokens/devin-night/skeleton-blue.png b/assets/tokens/devin-night/skeleton-blue.png new file mode 100644 index 00000000..d1f5877b Binary files /dev/null and b/assets/tokens/devin-night/skeleton-blue.png differ diff --git a/assets/tokens/devin-night/skeleton-green.png b/assets/tokens/devin-night/skeleton-green.png new file mode 100644 index 00000000..a4aa0ba7 Binary files /dev/null and b/assets/tokens/devin-night/skeleton-green.png differ diff --git a/assets/tokens/devin-night/troll-blue.png b/assets/tokens/devin-night/troll-blue.png new file mode 100644 index 00000000..bbb13ba3 Binary files /dev/null and b/assets/tokens/devin-night/troll-blue.png differ diff --git a/assets/tokens/devin-night/troll-green-vambraces.png b/assets/tokens/devin-night/troll-green-vambraces.png new file mode 100644 index 00000000..8804b8c1 Binary files /dev/null and b/assets/tokens/devin-night/troll-green-vambraces.png differ diff --git a/assets/tokens/devin-night/troll-green.png b/assets/tokens/devin-night/troll-green.png new file mode 100644 index 00000000..cc7ad9eb Binary files /dev/null and b/assets/tokens/devin-night/troll-green.png differ diff --git a/assets/tokens/devin-night/troll-tan.png b/assets/tokens/devin-night/troll-tan.png new file mode 100644 index 00000000..f167bedc Binary files /dev/null and b/assets/tokens/devin-night/troll-tan.png differ diff --git a/assets/tokens/devin-night/vampire-bat.png b/assets/tokens/devin-night/vampire-bat.png new file mode 100644 index 00000000..32339173 Binary files /dev/null and b/assets/tokens/devin-night/vampire-bat.png differ diff --git a/assets/tokens/devin-night/war-horse.png b/assets/tokens/devin-night/war-horse.png new file mode 100644 index 00000000..7da7908a Binary files /dev/null and b/assets/tokens/devin-night/war-horse.png differ diff --git a/assets/tokens/devin-night/wolf-1.png b/assets/tokens/devin-night/wolf-1.png new file mode 100644 index 00000000..7b73da53 Binary files /dev/null and b/assets/tokens/devin-night/wolf-1.png differ diff --git a/assets/tokens/devin-night/wolf-2.png b/assets/tokens/devin-night/wolf-2.png new file mode 100644 index 00000000..db914014 Binary files /dev/null and b/assets/tokens/devin-night/wolf-2.png differ diff --git a/assets/tokens/devin-night/wolf-3.png b/assets/tokens/devin-night/wolf-3.png new file mode 100644 index 00000000..9558e8f6 Binary files /dev/null and b/assets/tokens/devin-night/wolf-3.png differ diff --git a/assets/tokens/devin-night/zombie-female-green.png b/assets/tokens/devin-night/zombie-female-green.png new file mode 100644 index 00000000..d042bf69 Binary files /dev/null and b/assets/tokens/devin-night/zombie-female-green.png differ diff --git a/assets/tokens/devin-night/zombie-female-red.png b/assets/tokens/devin-night/zombie-female-red.png new file mode 100644 index 00000000..19a6cde4 Binary files /dev/null and b/assets/tokens/devin-night/zombie-female-red.png differ diff --git a/assets/tokens/devin-night/zombie-male-beige.png b/assets/tokens/devin-night/zombie-male-beige.png new file mode 100644 index 00000000..87cda96a Binary files /dev/null and b/assets/tokens/devin-night/zombie-male-beige.png differ diff --git a/assets/tokens/devin-night/zombie-male-green.png b/assets/tokens/devin-night/zombie-male-green.png new file mode 100644 index 00000000..bcde62ee Binary files /dev/null and b/assets/tokens/devin-night/zombie-male-green.png differ diff --git a/assets/tokens/devin-night/zombie-male-yellow.png b/assets/tokens/devin-night/zombie-male-yellow.png new file mode 100644 index 00000000..62656dfc Binary files /dev/null and b/assets/tokens/devin-night/zombie-male-yellow.png differ diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..7401f777 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,8 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @type {import("@commitlint/types").UserConfig} + */ +export default { extends: ["@commitlint/config-conventional"] }; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..1f584aea --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,65 @@ +// SPDX-FileCopyrightText: 2025 Johannes Loher +// +// SPDX-License-Identifier: MIT + +// @ts-check + +import eslint from "@eslint/js"; +import eslintConfigPrettier from "eslint-config-prettier"; +import tseslint from "typescript-eslint"; +import globals from "globals"; + +const foundryGlobals = { + ActiveEffect: false, + ActiveEffectConfig: false, + Actor: false, + ActorSheet: false, + canvas: false, + Canvas: false, + ChatMessage: false, + CONFIG: false, + DocumentSheetConfig: false, + game: false, + Game: false, + Hooks: false, + Item: false, + ItemSheet: false, + Macro: false, + Notifications: false, + ui: false, + loadTemplates: false, + foundry: false, + Dialog: false, + renderTemplate: false, + TokenDocument: false, + Roll: false, + TextEditor: false, + CONST: false, + getProperty: false, + fromUuid: false, +}; + +export default tseslint.config( + { + ignores: ["dist/**", "client", "common"], + }, + eslint.configs.recommended, + tseslint.configs.recommended, + { + languageOptions: { + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + }, + globals: { ...globals.browser, ...globals.jquery, ...foundryGlobals }, + }, + }, + { + files: ["tools/**", "*"], + languageOptions: { + parserOptions: {}, + globals: globals.node, + }, + }, + eslintConfigPrettier, +); diff --git a/fonts/Lora/Lora-Bold.woff b/fonts/Lora/Lora-Bold.woff new file mode 100644 index 00000000..3d2e1ecd Binary files /dev/null and b/fonts/Lora/Lora-Bold.woff differ diff --git a/fonts/Lora/Lora-Bold.woff.license b/fonts/Lora/Lora-Bold.woff.license new file mode 100644 index 00000000..00399660 --- /dev/null +++ b/fonts/Lora/Lora-Bold.woff.license @@ -0,0 +1,3 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-BoldItalic.woff b/fonts/Lora/Lora-BoldItalic.woff new file mode 100644 index 00000000..cc53adb5 Binary files /dev/null and b/fonts/Lora/Lora-BoldItalic.woff differ diff --git a/fonts/Lora/Lora-BoldItalic.woff.license b/fonts/Lora/Lora-BoldItalic.woff.license new file mode 100644 index 00000000..00399660 --- /dev/null +++ b/fonts/Lora/Lora-BoldItalic.woff.license @@ -0,0 +1,3 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-Italic.woff b/fonts/Lora/Lora-Italic.woff new file mode 100644 index 00000000..2c2c863a Binary files /dev/null and b/fonts/Lora/Lora-Italic.woff differ diff --git a/fonts/Lora/Lora-Italic.woff.license b/fonts/Lora/Lora-Italic.woff.license new file mode 100644 index 00000000..00399660 --- /dev/null +++ b/fonts/Lora/Lora-Italic.woff.license @@ -0,0 +1,3 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-Regular.woff b/fonts/Lora/Lora-Regular.woff new file mode 100644 index 00000000..c7d539f3 Binary files /dev/null and b/fonts/Lora/Lora-Regular.woff differ diff --git a/fonts/Lora/Lora-Regular.woff.license b/fonts/Lora/Lora-Regular.woff.license new file mode 100644 index 00000000..00399660 --- /dev/null +++ b/fonts/Lora/Lora-Regular.woff.license @@ -0,0 +1,3 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora.woff b/fonts/Lora/Lora.woff new file mode 100644 index 00000000..92d8a707 Binary files /dev/null and b/fonts/Lora/Lora.woff differ diff --git a/fonts/Lora/Lora.woff.license b/fonts/Lora/Lora.woff.license new file mode 100644 index 00000000..00399660 --- /dev/null +++ b/fonts/Lora/Lora.woff.license @@ -0,0 +1,3 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/src/fonts/Woodstamp.woff b/fonts/Woodstamp/Woodstamp.woff similarity index 100% rename from src/fonts/Woodstamp.woff rename to fonts/Woodstamp/Woodstamp.woff diff --git a/fonts/Woodstamp/Woodstamp.woff.license b/fonts/Woodstamp/Woodstamp.woff.license new file mode 100644 index 00000000..e99a18a4 --- /dev/null +++ b/fonts/Woodstamp/Woodstamp.woff.license @@ -0,0 +1,3 @@ +Copyright (c) 2007 by Ryoichi Tsunekawa. All rights reserved. + +SPDX-License-Identifier: LicenseRef-Woodstamp \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 1cf31998..00000000 --- a/gulpfile.js +++ /dev/null @@ -1,340 +0,0 @@ -const gulp = require("gulp"); -const fs = require("fs-extra"); -const path = require("path"); -const chalk = require("chalk"); -const stringify = require("json-stringify-pretty-compact"); -const typescript = require("typescript"); - -const ts = require("gulp-typescript"); -const sass = require("gulp-sass"); - -const argv = require("yargs").argv; - -sass.compiler = require("sass"); - -function getConfig() { - const configPath = path.resolve(process.cwd(), "foundryconfig.json"); - let config; - - if (fs.existsSync(configPath)) { - config = fs.readJSONSync(configPath); - return config; - } else { - return; - } -} - -function getManifest() { - const json = {}; - - if (fs.existsSync("src")) { - json.root = "src"; - } else { - json.root = "dist"; - } - - const modulePath = path.join(json.root, "module.json"); - const systemPath = path.join(json.root, "system.json"); - - if (fs.existsSync(modulePath)) { - json.file = fs.readJSONSync(modulePath); - json.name = "module.json"; - } else if (fs.existsSync(systemPath)) { - json.file = fs.readJSONSync(systemPath); - json.name = "system.json"; - } else { - return; - } - - return json; -} - -/** - * TypeScript transformers - * @returns {typescript.TransformerFactory} - */ -function createTransformer() { - /** - * @param {typescript.Node} node - */ - function shouldMutateModuleSpecifier(node) { - if (!typescript.isImportDeclaration(node) && !typescript.isExportDeclaration(node)) return false; - if (node.moduleSpecifier === undefined) return false; - if (!typescript.isStringLiteral(node.moduleSpecifier)) return false; - if (!node.moduleSpecifier.text.startsWith("./") && !node.moduleSpecifier.text.startsWith("../")) return false; - if (path.extname(node.moduleSpecifier.text) !== "") return false; - return true; - } - - /** - * Transforms import/export declarations to append `.js` extension - * @param {typescript.TransformationContext} context - */ - function importTransformer(context) { - return (node) => { - /** - * @param {typescript.Node} node - */ - function visitor(node) { - if (shouldMutateModuleSpecifier(node)) { - if (typescript.isImportDeclaration(node)) { - const newModuleSpecifier = typescript.createLiteral(`${node.moduleSpecifier.text}.js`); - return typescript.updateImportDeclaration( - node, - node.decorators, - node.modifiers, - node.importClause, - newModuleSpecifier, - ); - } else if (typescript.isExportDeclaration(node)) { - const newModuleSpecifier = typescript.createLiteral(`${node.moduleSpecifier.text}.js`); - return typescript.updateExportDeclaration( - node, - node.decorators, - node.modifiers, - node.exportClause, - newModuleSpecifier, - ); - } - } - return typescript.visitEachChild(node, visitor, context); - } - - return typescript.visitNode(node, visitor); - }; - } - - return importTransformer; -} - -const tsConfig = ts.createProject("tsconfig.json", { - getCustomTransformers: (_program) => ({ - after: [createTransformer()], - }), -}); - -/********************/ -/* BUILD */ -/********************/ - -/** - * Build TypeScript - */ -function buildTS() { - return gulp.src("src/**/*.ts").pipe(tsConfig()).pipe(gulp.dest("dist")); -} - -/** - * Build SASS - */ -function buildSASS() { - return gulp.src("src/*.scss").pipe(sass().on("error", sass.logError)).pipe(gulp.dest("dist")); -} - -/** - * Copy static files - */ -async function copyFiles() { - const statics = ["lang", "fonts", "assets", "templates", "module.json", "system.json", "template.json"]; - try { - for (const file of statics) { - if (fs.existsSync(path.join("src", file))) { - await fs.copy(path.join("src", file), path.join("dist", file)); - } - } - return Promise.resolve(); - } catch (err) { - Promise.reject(err); - } -} - -/** - * Watch for changes for each build step - */ -function buildWatch() { - gulp.watch("src/**/*.ts", { ignoreInitial: false }, buildTS); - gulp.watch("src/**/*.scss", { ignoreInitial: false }, buildSASS); - gulp.watch(["src/fonts", "src/lang", "src/templates", "src/*.json"], { ignoreInitial: false }, copyFiles); -} - -/********************/ -/* CLEAN */ -/********************/ - -/** - * Remove built files from `dist` folder - * while ignoring source files - */ -async function clean() { - const name = path.basename(path.resolve(".")); - const files = []; - - // If the project uses TypeScript - if (fs.existsSync(path.join("src", `${name}.ts`))) { - files.push( - "lang", - "templates", - "assets", - "module", - `${name}.js`, - "module.json", - "system.json", - "template.json", - ); - } - - // If the project uses SASS - if (fs.existsSync(path.join("src", `${name}.scss`))) { - files.push("fonts", `${name}.css`); - } - - console.log(" ", chalk.yellow("Files to clean:")); - console.log(" ", chalk.blueBright(files.join("\n "))); - - // Attempt to remove the files - try { - for (const filePath of files) { - await fs.remove(path.join("dist", filePath)); - } - return Promise.resolve(); - } catch (err) { - Promise.reject(err); - } -} - -/********************/ -/* LINK */ -/********************/ - -/** - * Link build to User Data folder - */ -async function linkUserData() { - const name = path.basename(path.resolve(".")); - const config = fs.readJSONSync("foundryconfig.json"); - - let destDir; - try { - if ( - fs.existsSync(path.resolve(".", "dist", "module.json")) || - fs.existsSync(path.resolve(".", "src", "module.json")) - ) { - destDir = "modules"; - } else if ( - fs.existsSync(path.resolve(".", "dist", "system.json")) || - fs.existsSync(path.resolve(".", "src", "system.json")) - ) { - destDir = "systems"; - } else { - throw Error(`Could not find ${chalk.blueBright("module.json")} or ${chalk.blueBright("system.json")}`); - } - - let linkDir; - if (config.dataPath) { - if (!fs.existsSync(path.join(config.dataPath, "Data"))) - throw Error("User Data path invalid, no Data directory found"); - - linkDir = path.join(config.dataPath, "Data", destDir, name); - } else { - throw Error("No User Data path defined in foundryconfig.json"); - } - - if (argv.clean || argv.c) { - console.log(chalk.yellow(`Removing build in ${chalk.blueBright(linkDir)}`)); - - await fs.remove(linkDir); - } else if (!fs.existsSync(linkDir)) { - console.log(chalk.green(`Copying build to ${chalk.blueBright(linkDir)}`)); - await fs.symlink(path.resolve("./dist"), linkDir); - } - return Promise.resolve(); - } catch (err) { - Promise.reject(err); - } -} - -/*********************/ -/* PACKAGE */ -/*********************/ - -/** - * Update version and URLs in the manifest JSON - */ -function updateManifest(cb) { - const packageJson = fs.readJSONSync("package.json"); - const packageLockJson = fs.readJSONSync("package-lock.json"); - const manifest = getManifest(); - - if (!manifest) cb(Error(chalk.red("Manifest JSON not found"))); - - try { - const version = argv.update || argv.u; - - /* Update version */ - - const versionMatch = /^(\d{1,}).(\d{1,}).(\d{1,})$/; - const currentVersion = manifest.file.version; - let targetVersion = ""; - - if (!version) { - cb(Error("Missing version number")); - } - - if (versionMatch.test(version)) { - targetVersion = version; - } else { - targetVersion = currentVersion.replace(versionMatch, (substring, major, minor, patch) => { - console.log(substring, Number(major) + 1, Number(minor) + 1, Number(patch) + 1); - if (version === "major") { - return `${Number(major) + 1}.0.0`; - } else if (version === "minor") { - return `${major}.${Number(minor) + 1}.0`; - } else if (version === "patch") { - return `${major}.${minor}.${Number(patch) + 1}`; - } else { - return ""; - } - }); - } - - if (targetVersion === "") { - return cb(Error(chalk.red("Error: Incorrect version arguments."))); - } - - if (targetVersion === currentVersion) { - return cb(Error(chalk.red("Error: Target version is identical to current version."))); - } - console.log(`Updating version number to '${targetVersion}'`); - - packageJson.version = targetVersion; - packageLockJson.version = targetVersion; - manifest.file.version = targetVersion; - - /* Update URL */ - const result = `https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/${targetVersion}/download?job=build`; - - manifest.file.download = result; - - const prettyProjectJson = - stringify(manifest.file, { - maxLength: 40, - indent: 4, - }) + "\n"; - - fs.writeJSONSync("package.json", packageJson, { spaces: 4 }); - fs.writeJSONSync("package-lock.json", packageLockJson, { spaces: 4 }); - fs.writeFileSync(path.join(manifest.root, manifest.name), prettyProjectJson, "utf8"); - - return cb(); - } catch (err) { - cb(err); - } -} - -const execBuild = gulp.parallel(buildTS, buildSASS, copyFiles); - -exports.build = gulp.series(clean, execBuild); -exports.watch = buildWatch; -exports.clean = clean; -exports.link = linkUserData; -exports.updateManifest = updateManifest; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 00000000..8b929d6f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "module": "es2022", + "target": "ES2022" + }, + "exclude": ["node_modules", "dist"], + "include": ["src", "client", "common"] +} diff --git a/jsconfig.json.license b/jsconfig.json.license new file mode 100644 index 00000000..467ee146 --- /dev/null +++ b/jsconfig.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 Johannes Loher + +SPDX-License-Identifier: MIT diff --git a/lang/de.json b/lang/de.json new file mode 100644 index 00000000..7d49ef08 --- /dev/null +++ b/lang/de.json @@ -0,0 +1,391 @@ +{ + "DS4.UserInteractionAdd": "Neu", + "DS4.UserInteractionAddItemTitle": "Item Erstellen", + "DS4.UserInteractionEditItemTitle": "Item Bearbeiten", + "DS4.UserInteractionDeleteItemTitle": "Item Löschen", + "DS4.UserInteractionAddEffectTitle": "Effekt Erstellen", + "DS4.UserInteractionEditEffectTitle": "Effekt Bearbeiten", + "DS4.UserInteractionDeleteEffectTitle": "Effekt Löschen", + "DS4.DocumentImageAltText": "Bild von {name}", + "DS4.RollableImageRollableTitle": "Für {name} würfeln", + "DS4.DiceOverlayImageAltText": "Bild eines W20", + "DS4.HeadingValues": "Werte", + "DS4.HeadingBiography": "Biografie", + "DS4.HeadingProperties": "Eigenschaften", + "DS4.HeadingEffects": "Effekte", + "DS4.HeadingInventory": "Inventar", + "DS4.HeadingAbilities": "Fähigkeiten", + "DS4.HeadingSpells": "Zaubersprüche", + "DS4.HeadingDescription": "Beschreibung", + "DS4.AttackType": "Angriffsart", + "DS4.AttackTypeAbbr": "AA", + "DS4.SortByAttackType": "Nach Angriffsart sortieren", + "DS4.DialogAttackTypeSelection": "Welche Angriffsart?", + "DS4.DialogAttributeTraitSelection": "Welches Attribut und welche Eigenschaft?", + "DS4.WeaponBonus": "Waffenbonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.SortByWeaponBonus": "Nach Waffenbonus sortieren", + "DS4.OpponentDefense": "Gegnerabwehr", + "DS4.OpponentDefenseAbbr": "GA", + "DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren", + "DS4.OpponentDefenseMelee": "Gegnerabwehr für Schlagen", + "DS4.OpponentDefenseRanged": "Gegnerabwehr für Schießen", + "DS4.AttackTypeMelee": "Schlagen", + "DS4.AttackTypeRanged": "Schießen", + "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", + "DS4.Description": "Beschreibung", + "DS4.SortByDescription": "Nach Beschreibung sortieren", + "DS4.Quantity": "Menge", + "DS4.SortByQuantity": "Nach Menge sortieren", + "DS4.PriceGold": "Preis (Gold)", + "DS4.StorageLocation": "Wo gelagert", + "DS4.SortByStorageLocation": "Nach Lagerungsort sortieren", + "DS4.ItemEquipped": "Ausgerüstet", + "DS4.ItemEquippedAbbr": "A", + "DS4.SortByItemEquipped": "Nach Ausgerüstet sortieren", + "DS4.ItemAvailability": "Verfügbarkeit", + "DS4.ItemAvailabilityHamlet": "Dorf", + "DS4.ItemAvailabilityVilage": "Kleinstadt", + "DS4.ItemAvailabilityCity": "Großstadt", + "DS4.ItemAvailabilityElves": "Elfen", + "DS4.ItemAvailabilityDwarves": "Zwerge", + "DS4.ItemAvailabilityUnset": "nicht gesetzt", + "DS4.ItemAvailabilityNowhere": "nirgendwo", + "DS4.ItemName": "Name", + "DS4.SortByItemName": "Nach Name sortieren", + "DS4.ItemTypeWeapon": "Waffe", + "DS4.ItemTypeWeaponPlural": "Waffen", + "DS4.ItemTypeArmor": "Panzerung", + "DS4.ItemTypeArmorPlural": "Panzerungen", + "DS4.ItemTypeShield": "Schild", + "DS4.ItemTypeShieldPlural": "Schilde", + "DS4.ItemTypeSpell": "Zauberspruch", + "DS4.ItemTypeSpellPlural": "Zaubersprüche", + "DS4.ItemTypeEquipment": "Ausrüstung", + "DS4.ItemTypeEquipmentPlural": "Ausrüstung", + "DS4.ItemTypeLoot": "Beute", + "DS4.ItemTypeLootPlural": "Beute", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talente", + "DS4.ItemTypeRacialAbility": "Volksfähigkeit", + "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", + "DS4.ItemTypeLanguage": "Sprache", + "DS4.ItemTypeLanguagePlural": "Sprachen", + "DS4.ItemTypeAlphabet": "Schriftzeichen", + "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", + "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", + "DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.", + "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} greift mit {weapon} an.
Gegnerabwehr: {opponentDefense}", + "DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.", + "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} wirkt {spell}.
Gegnerabwehr: {opponentDefense}", + "DS4.ItemPropertiesArmor": "Panzerungseigenschaften", + "DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften", + "DS4.ItemPropertiesPhysical": "Physische Eigenschaften", + "DS4.ItemPropertiesProtective": "Schützende Eigenschaften", + "DS4.ItemPropertiesSpecialCreatureAbility": "Besondere Kreaturenfähigkeitseigenschaften", + "DS4.ItemPropertiesSpell": "Zaubereigenschaften", + "DS4.ItemPropertiesTalent": "Talenteigenschaften", + "DS4.ItemPropertiesWeapon": "Waffeneigenschaften", + "DS4.ArmorType": "Panzerungstyp", + "DS4.ArmorTypeAbbr": "PAT", + "DS4.SortByArmorType": "Nach Panzerungstyp sortieren", + "DS4.ArmorMaterialType": "Materialtyp", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.SortByArmorMaterialType": "Nach Materialtyp sortieren", + "DS4.ArmorValue": "Panzerungswert", + "DS4.ArmorValueAbbr": "PA", + "DS4.SortByArmorValue": "Nach Panzerungswert sortieren", + "DS4.ArmorTypeBody": "Körper", + "DS4.ArmorTypeBodyAbbr": "Körper", + "DS4.ArmorTypeHelmet": "Helm", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Armschienen", + "DS4.ArmorTypeVambraceAbbr": "Arm", + "DS4.ArmorTypeGreaves": "Beinschienen", + "DS4.ArmorTypeGreavesAbbr": "Bein", + "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", + "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", + "DS4.ArmorMaterialTypeCloth": "Stoff", + "DS4.ArmorMaterialTypeClothAbbr": "Stoff", + "DS4.ArmorMaterialTypeLeather": "Leder", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", + "DS4.ArmorMaterialTypeChain": "Ketten", + "DS4.ArmorMaterialTypeChainAbbr": "Ketten", + "DS4.ArmorMaterialTypePlate": "Platten", + "DS4.ArmorMaterialTypePlateAbbr": "Platten", + "DS4.ArmorMaterialTypeNatural": "Natürlich", + "DS4.ArmorMaterialTypeNaturalAbbr": "Natürlich", + "DS4.SpellType": "Zauberspruchtyp", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeDescription": "Der Typ des Zauberspruchs.", + "DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren", + "DS4.SpellTypeSpellcasting": "Zaubern", + "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", + "DS4.SpellGroups": "Zaubergruppen", + "DS4.SpellGroupsDescription": "Zaubergruppen, denen der Zauberspruch zugehörig ist.", + "DS4.SpellGroupLightning": "Blitz", + "DS4.SpellGroupEarth": "Erde, Fels, Stein", + "DS4.SpellGroupWater": "Wasser", + "DS4.SpellGroupIce": "Eis, Frost", + "DS4.SpellGroupFire": "Feuer", + "DS4.SpellGroupHealing": "Heilung", + "DS4.SpellGroupLight": "Licht", + "DS4.SpellGroupAir": "Luft", + "DS4.SpellGroupTransport": "Transport", + "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.SpellModifierNumerical": "Zauberbonus (numerisch)", + "DS4.SpellModifierComplex": "Zauberbonus (komplex)", + "DS4.SpellModifierAbbr": "ZB", + "DS4.SpellModifierNumericalDescription": "Der numerische 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.SpellDistance": "Distanz", + "DS4.SpellDistanceDescription": "Die maximale Entfernung zum Ziel. „Selbst“ bedeutet, dass nur der Zauberwirker selbst das Ziel des Zaubers sein kann.", + "DS4.SpellEffectRadius": "Wirkungsradius", + "DS4.SpellEffectRadiusDescription": "Der Wirkungsradius des Zaubers.", + "DS4.SpellDuration": "Dauer", + "DS4.SpellDurationDescription": "Die Wirkungszeit des Zaubers.", + "DS4.CooldownDuration": "Abklingzeit", + "DS4.CooldownDurationDescription": "Die Dauer, die der Zauber nach erfolgreichem Wirken nicht einsetzbar ist.", + "DS4.CooldownDuration0R": "0 Kampfrunden", + "DS4.CooldownDuration1R": "1 Kampfrunde", + "DS4.CooldownDuration2R": "2 Kampfrunden", + "DS4.CooldownDuration5R": "5 Kampfrunden", + "DS4.CooldownDuration10R": "10 Kampfrunden", + "DS4.CooldownDuration100R": "100 Kampfrunden", + "DS4.CooldownDuration1D": "1 Tag", + "DS4.CooldownDurationD20D": "W20 Tage", + "DS4.SpellAllowsDefense": "Erlaubt Abwehr", + "DS4.SpellAllowsDefenseDescription": "Ist eine Abwehren-Probe gegen diesen Zauber erlaubt?", + "DS4.SpellMinimumLevel": "Zugangsstufe", + "DS4.SpellMinimumLevelDescription": "Die minimale Stufe, ab der ein Zauberwirker den Zauberspruch erlernen kann.", + "DS4.SpellCasterClassHealer": "Heiler", + "DS4.SpellCasterClassSorcerer": "Schwarzmagier", + "DS4.SpellCasterClassWizard": "Zauberer", + "DS4.SpellPrice": "Preis (Gold)", + "DS4.SpellPriceDescription": "Der Kaufpreis des Zauberspruchs.", + "DS4.EffectEnabled": "Eingeschaltet", + "DS4.EffectEnabledAbbr": "E", + "DS4.EffectActive": "Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)", + "DS4.EffectActiveAbbr": "A", + "DS4.EffectName": "Name", + "DS4.EffectSourceName": "Quelle", + "DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)", + "DS4.EffectFactorAbbr": "F", + "DS4.ActorName": "Name", + "DS4.ActorImageAltText": "Bild des Aktors", + "DS4.ActorTypeCharacter": "Charakter", + "DS4.ActorTypeCreature": "Kreatur", + "DS4.Attribute": "Attribut", + "DS4.AttributeBody": "Körper", + "DS4.AttributeMobility": "Agilität", + "DS4.AttributeMind": "Geist", + "DS4.Trait": "Eigenschaft", + "DS4.TraitStrength": "Stärke", + "DS4.TraitConstitution": "Härte", + "DS4.TraitAgility": "Bewegung", + "DS4.TraitDexterity": "Geschick", + "DS4.TraitIntellect": "Verstand", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Lebenskraft", + "DS4.CombatValuesHitPointsCurrent": "Aktuelle Lebenskraft", + "DS4.CombatValuesHitPointsCurrentAbbr": "LK", + "DS4.CombatValuesDefense": "Abwehr", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Laufen", + "DS4.CombatValuesMeleeAttack": "Schlagen", + "DS4.CombatValuesRangedAttack": "Schießen", + "DS4.CombatValuesSpellcasting": "Zaubern", + "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", + "DS4.CombatValuesHitPointsSheet": "Lebenskraft", + "DS4.CombatValuesDefenseSheet": "Abwehr", + "DS4.CombatValuesInitiativeSheet": "Initiative", + "DS4.CombatValuesMovementSheet": "Laufen", + "DS4.CombatValuesMeleeAttackSheet": "Schlagen", + "DS4.CombatValuesRangedAttackSheet": "Schießen", + "DS4.CombatValuesSpellcastingSheet": "Zaubern", + "DS4.CombatValuesTargetedSpellcastingSheet": "Zielzaubern", + "DS4.CharacterBaseInfoRace": "Volk", + "DS4.CharacterBaseInfoClass": "Klasse", + "DS4.CharacterBaseInfoHeroClass": "Heldenklasse", + "DS4.CharacterBaseInfoCulture": "Kultur", + "DS4.CharacterProgressionLevel": "Stufe", + "DS4.CharacterProgressionLevelAbbr": "ST", + "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProgressionExperiencePointsAbbr": "EP", + "DS4.CharacterProgressionTalentPoints": "Talentpunkte", + "DS4.CharacterProgressionProgressPoints": "Lernpunkte", + "DS4.CharacterSlayerPoints": "Slayerpunkte", + "DS4.CharacterSlayerPointsAbbr": "SP", + "DS4.TalentRank": "Rang", + "DS4.SortByTalentRank": "Nach Rang sortieren", + "DS4.TalentRankBase": "Erworben", + "DS4.TalentRankMax": "Maximum", + "DS4.TalentRankMod": "Zusätzlich", + "DS4.TalentRankTotal": "Gesamt", + "DS4.CharacterLanguageLanguages": "Sprachen", + "DS4.CharacterLanguageAlphabets": "Schriftzeichen", + "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProfileBiography": "Biographie", + "DS4.CharacterProfileGender": "Geschlecht", + "DS4.CharacterProfileBirthday": "Geburtstag", + "DS4.CharacterProfileBirthplace": "Geburtsort", + "DS4.CharacterProfileAge": "Alter", + "DS4.CharacterProfileHeight": "Größe [cm]", + "DS4.CharacterProfileHairColor": "Haarfarbe", + "DS4.CharacterProfileWeight": "Gewicht [kg]", + "DS4.CharacterProfileEyeColor": "Augenfarbe", + "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silber", + "DS4.CharacterCurrencyCopper": "Kupfer", + "DS4.CharacterCurrency": "Währung", + "DS4.CreatureTypeAnimal": "Tier", + "DS4.CreatureTypeConstruct": "Konstrukt", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", + "DS4.CreatureTypePlantBeing": "Pflanzenwesen", + "DS4.CreatureTypeUndead": "Untot", + "DS4.CreatureSizeCategoryTiny": "Winzig", + "DS4.CreatureSizeCategorySmall": "Klein", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Groß", + "DS4.CreatureSizeCategoryHuge": "Riesig", + "DS4.CreatureSizeCategoryColossal": "Gewaltig", + "DS4.CreatureBaseInfoLoot": "Beute", + "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", + "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", + "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", + "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", + "DS4.CreatureBaseInfoDescription": "Beschreibung", + "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.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", + "DS4.ErrorInvalidNumberOfDice": "Ungültige Anzahl an Würfeln.", + "DS4.ErrorInvalidActorType": "Ungültiger Aktortyp '{type}'.", + "DS4.ErrorInvalidItemType": "Ungültiger Itemtyp '{type}'.", + "DS4.ErrorDuringMigration": "Fehler während der Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", + "DS4.ErrorDuringCompendiumMigration": "Fehler während der Aktualisierung Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", + "DS4.ErrorCannotRollUnownedItem": "Für das Item '{name}' ({id}) kann nicht gewürfelt werden, da es keinem Aktor gehört.", + "DS4.ErrorRollingForItemTypeNotPossible": "Würfeln ist für Items vom Typ '{type}' nicht möglich.", + "DS4.ErrorUnexpectedAttackType": "Unerwartete Angriffsart '{actualType}', erwartete Angriffsarten: {expectedTypes}", + "DS4.ErrorUnexpectedAttribute": "Unerwartetes Attribut '{actualAttribute}', erwartete Attribute: {expectedTypes}", + "DS4.ErrorUnexpectedTrait": "Unerwartete Eigenschaft '{actualTrait}', erwartete Eigenschaften: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas ist noch nicht initialisiert.", + "DS4.ErrorCannotDragMissingCheck": "Die Probe '{check}' per Drag & Drop zu ziehen ist nicht möglich, denn sie existiert nicht.", + "DS4.WarningItemMustBeEquippedToBeRolled": "Um für das Item '{name}' ({id}) vom Typ '{type}' zu würfeln, muss es ausgerüstet sein.", + "DS4.WarningMustControlActorToUseRollItemMacro": "Um ein Item-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "Um ein Proben-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningControlledActorDoesNotHaveItem": "Der kontrollierte Aktor '{actorName}' ({actorId}) hat kein Item mit der ID '{itemId}'.", + "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.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.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.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.UnitRounds": "Runden", + "DS4.UnitRoundsAbbr": "Rnd", + "DS4.UnitMinutes": "Minuten", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Stunden", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Tage", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meter", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometer", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "individuell", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "OK", + "DS4.GenericCancelButton": "Abbrechen", + "DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen", + "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.", + "DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der UUID '{uuid}'.", + "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.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der UUID '{uuid}'.", + "DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert", + "DS4.DialogRollOptionsCheckModifierLabel": "Modifikator", + "DS4.DialogRollOptionsCheckModifierCustomLabel": "Individueller Modifikator", + "DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis", + "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab", + "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.TooltipModifier": "Modifikator", + "DS4.TooltipEffects": "Effekte", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slayende Würfel", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.", + "DS4.SettingShowSlayerPointsName": "Slayerpunkte", + "DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.", + "DS4.Checks": "Proben", + "DS4.ChecksAppraise": "Schätzen", + "DS4.ChecksChangeSpell": "Zauber Wechseln", + "DS4.ChecksClimb": "Klettern", + "DS4.ChecksCommunicate": "Verständigen", + "DS4.ChecksDecipherScript": "Inschrift Entziffern", + "DS4.ChecksDefend": "Abwehren", + "DS4.ChecksDefyPoison": "Gift Trotzen", + "DS4.ChecksDisableTraps": "Fallen Entschärfen", + "DS4.ChecksFeatOfStrength": "Kraftakt", + "DS4.ChecksFlirt": "Flirten", + "DS4.ChecksHaggle": "Feilschen", + "DS4.ChecksHide": "Verbergen", + "DS4.ChecksIdentifyMagic": "Magie Erkennen", + "DS4.ChecksJump": "Springen", + "DS4.ChecksKnowledge": "Wissen", + "DS4.ChecksOpenLock": "Schlösser Öffnen", + "DS4.ChecksPerception": "Bemerken", + "DS4.ChecksPickPocket": "Taschendiebstahl", + "DS4.ChecksReadTracks": "Spuren Lesen", + "DS4.ChecksResistDisease": "Krankheit Trotzen", + "DS4.ChecksRide": "Reiten", + "DS4.ChecksSearch": "Suchen", + "DS4.ChecksSenseMagic": "Magie Erspüren", + "DS4.ChecksSneak": "Schleichen", + "DS4.ChecksStartFire": "Feuer Machen", + "DS4.ChecksSwim": "Schwimmen", + "DS4.ChecksWakeUp": "Erwachen", + "DS4.ChecksWorkMechanism": "Mechanismus Öffnen", + "DS4.ActorCheckFlavor": "{actor} würfelt eine {check} Probe.", + "DS4.ActorGenericCheckFlavor": "{actor} würfelt eine Probe gegen {attribute} + {trait}.", + "DS4.CheckTooltip": "{check} Probe würfeln", + "DS4.NewWeaponName": "Neue Waffe", + "DS4.NewArmorName": "Neue Panzerung", + "DS4.NewShieldName": "Neuer Schild", + "DS4.NewSpellName": "Neuer Zauberspruch", + "DS4.NewEquipmentName": "Neue Ausrüstung", + "DS4.NewLootName": "Neue Beute", + "DS4.NewTalentName": "Neues Talent", + "DS4.NewRacialAbilityName": "Neue Volksfähigkeit", + "DS4.NewLanguageName": "Neue Sprache", + "DS4.NewAlphabetName": "Neue Schriftzeichen", + "DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit", + "DS4.NewEffectName": "Neuer Effekt", + + "DS4.ActiveEffectApplyToItems": "Auf Items Anwenden", + "DS4.ActiveEffectItemName": "Itemname", + "DS4.ActiveEffectItemCondition": "Bedingung", + "DS4.TooltipNotEditableDueToEffects": "Feld nicht bearbeitbar, weil von Aktiven Effekten beeinflusst" +} diff --git a/lang/de.json.license b/lang/de.json.license new file mode 100644 index 00000000..ff79d3f7 --- /dev/null +++ b/lang/de.json.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 00000000..847f0aea --- /dev/null +++ b/lang/en.json @@ -0,0 +1,391 @@ +{ + "DS4.UserInteractionAdd": "Add", + "DS4.UserInteractionAddItemTitle": "Create Item", + "DS4.UserInteractionEditItemTitle": "Edit Item", + "DS4.UserInteractionDeleteItemTitle": "Delete Item", + "DS4.UserInteractionAddEffectTitle": "Create Effect", + "DS4.UserInteractionEditEffectTitle": "Edit Effect", + "DS4.UserInteractionDeleteEffectTitle": "Delete Effect", + "DS4.DocumentImageAltText": "Image of {name}", + "DS4.RollableImageRollableTitle": "Roll for {name}", + "DS4.DiceOverlayImageAltText": "Image of a d20", + "DS4.HeadingValues": "Values", + "DS4.HeadingBiography": "Biography", + "DS4.HeadingProperties": "Properties", + "DS4.HeadingEffects": "Effects", + "DS4.HeadingInventory": "Inventory", + "DS4.HeadingAbilities": "Abilities", + "DS4.HeadingSpells": "Spells", + "DS4.HeadingDescription": "Description", + "DS4.AttackType": "Attack Type", + "DS4.AttackTypeAbbr": "AT", + "DS4.SortByAttackType": "Sort by Attack Type", + "DS4.DialogAttackTypeSelection": "Which Attack Type?", + "DS4.DialogAttributeTraitSelection": "Which Attribute and Trait?", + "DS4.WeaponBonus": "Weapon Bonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.SortByWeaponBonus": "Sort by Weapon Bonus", + "DS4.OpponentDefense": "Opponent Defense", + "DS4.OpponentDefenseAbbr": "OD", + "DS4.SortByOpponentDefense": "Sort by Opponent Defense", + "DS4.OpponentDefenseMelee": "Opponent Defense for melee attacks", + "DS4.OpponentDefenseRanged": "Opponent Defense for ranged attacks", + "DS4.AttackTypeMelee": "Melee", + "DS4.AttackTypeRanged": "Ranged", + "DS4.AttackTypeMeleeRanged": "Melee / Ranged", + "DS4.Description": "Description", + "DS4.SortByDescription": "Sort by Description", + "DS4.Quantity": "Quantity", + "DS4.SortByQuantity": "Sort by Quantity", + "DS4.PriceGold": "Price (Gold)", + "DS4.StorageLocation": "Stored at", + "DS4.SortByStorageLocation": "Sort by Storage Location", + "DS4.ItemEquipped": "Equipped", + "DS4.ItemEquippedAbbr": "E", + "DS4.SortByItemEquipped": "Sort by Equipped", + "DS4.ItemAvailability": "Availability", + "DS4.ItemAvailabilityHamlet": "Hamlet", + "DS4.ItemAvailabilityVilage": "Village", + "DS4.ItemAvailabilityCity": "City", + "DS4.ItemAvailabilityElves": "Elves", + "DS4.ItemAvailabilityDwarves": "Dwarves", + "DS4.ItemAvailabilityUnset": "Unset", + "DS4.ItemAvailabilityNowhere": "Nowhere", + "DS4.ItemName": "Name", + "DS4.SortByItemName": "Sort by Name", + "DS4.ItemTypeWeapon": "Weapon", + "DS4.ItemTypeWeaponPlural": "Weapons", + "DS4.ItemTypeArmor": "Armor", + "DS4.ItemTypeArmorPlural": "Armor", + "DS4.ItemTypeShield": "Shield", + "DS4.ItemTypeShieldPlural": "Shields", + "DS4.ItemTypeSpell": "Spell", + "DS4.ItemTypeSpellPlural": "Spells", + "DS4.ItemTypeEquipment": "Equipment", + "DS4.ItemTypeEquipmentPlural": "Equipment", + "DS4.ItemTypeLoot": "Loot", + "DS4.ItemTypeLootPlural": "Loot", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talents", + "DS4.ItemTypeRacialAbility": "Racial Ability", + "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", + "DS4.ItemTypeLanguage": "Language", + "DS4.ItemTypeLanguagePlural": "Languages", + "DS4.ItemTypeAlphabet": "Alphabet", + "DS4.ItemTypeAlphabetPlural": "Alphabets", + "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", + "DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.", + "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} attacks with {weapon}
Opponent defense: {opponentDefense}", + "DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.", + "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} casts {spell}.
Opponent Defense: {opponentDefense}", + "DS4.ItemPropertiesArmor": "Armor Properties", + "DS4.ItemPropertiesEquipable": "Equipment Properties", + "DS4.ItemPropertiesPhysical": "Physical Properties", + "DS4.ItemPropertiesProtective": "Protective Properties", + "DS4.ItemPropertiesSpecialCreatureAbility": "Special Creature Ability Properties", + "DS4.ItemPropertiesSpell": "Spell Properties", + "DS4.ItemPropertiesTalent": "Talent Properties", + "DS4.ItemPropertiesWeapon": "Weapon Properties", + "DS4.ArmorType": "Armor Type", + "DS4.ArmorTypeAbbr": "AT", + "DS4.SortByArmorType": "Sort by Armor Type", + "DS4.ArmorMaterialType": "Material Type", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.SortByArmorMaterialType": "Sort by Material Type", + "DS4.ArmorValue": "Armor Value", + "DS4.ArmorValueAbbr": "AV", + "DS4.SortByArmorValue": "Sort by Armor Value", + "DS4.ArmorTypeBody": "Body", + "DS4.ArmorTypeBodyAbbr": "Body", + "DS4.ArmorTypeHelmet": "Helmet", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Vambrace", + "DS4.ArmorTypeVambraceAbbr": "Vambr", + "DS4.ArmorTypeGreaves": "Greaves", + "DS4.ArmorTypeGreavesAbbr": "Greav", + "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", + "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", + "DS4.ArmorMaterialTypeCloth": "Cloth", + "DS4.ArmorMaterialTypeClothAbbr": "Cloth", + "DS4.ArmorMaterialTypeLeather": "Leather", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", + "DS4.ArmorMaterialTypeChain": "Chain", + "DS4.ArmorMaterialTypeChainAbbr": "Chain", + "DS4.ArmorMaterialTypePlate": "Plate", + "DS4.ArmorMaterialTypePlateAbbr": "Plate", + "DS4.ArmorMaterialTypeNatural": "Natural", + "DS4.ArmorMaterialTypeNaturalAbbr": "Natural", + "DS4.SpellType": "Spell Type", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeDescription": "The type of the spell.", + "DS4.SortBySpellType": "Sort by Spell Type", + "DS4.SpellTypeSpellcasting": "Spellcasting", + "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", + "DS4.SpellGroups": "Spell Groups", + "DS4.SpellGroupsDescription": "Spell groups which the spell belongs to.", + "DS4.SpellGroupLightning": "Lightning", + "DS4.SpellGroupEarth": "Earth, Rock, Stone", + "DS4.SpellGroupWater": "Water", + "DS4.SpellGroupIce": "Ice, Frost", + "DS4.SpellGroupFire": "Fire", + "DS4.SpellGroupHealing": "Healing", + "DS4.SpellGroupLight": "Light", + "DS4.SpellGroupAir": "Air", + "DS4.SpellGroupTransport": "Transport", + "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.SpellModifierNumerical": "Spell Modifier (numerical)", + "DS4.SpellModifierComplex": "Spell Modifier (complex)", + "DS4.SpellModifierAbbr": "SM", + "DS4.SpellModifierNumericalDescription": "The numerical 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.SpellDistance": "Distance", + "DS4.SpellDistanceDescription": "The maximum distance to the target, “Self” meaning that only the caster can be the target of this spell.", + "DS4.SpellEffectRadius": "Area of Effect Radius", + "DS4.SpellEffectRadiusDescription": "The radius of the area of effect of the spell.", + "DS4.SpellDuration": "Duration", + "DS4.SpellDurationDescription": "The spell’s duration.", + "DS4.CooldownDuration": "Cooldown Period", + "DS4.CooldownDurationDescription": "The length of time to wait after a successful casting before the spell can be cast again.", + "DS4.CooldownDuration0R": "0 Rounds", + "DS4.CooldownDuration1R": "1 Round", + "DS4.CooldownDuration2R": "2 Rounds", + "DS4.CooldownDuration5R": "5 Rounds", + "DS4.CooldownDuration10R": "10 Rounds", + "DS4.CooldownDuration100R": "100 Rounds", + "DS4.CooldownDuration1D": "1 Day", + "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.SpellMinimumLevelDescription": "The minimum level at which a spell caster may learn the spell.", + "DS4.SpellCasterClassHealer": "Healer", + "DS4.SpellCasterClassSorcerer": "Sorcerer", + "DS4.SpellCasterClassWizard": "Wizard", + "DS4.SpellPrice": "Price (Gold)", + "DS4.SpellPriceDescription": "The price to purchase the spell.", + "DS4.EffectEnabled": "Enabled", + "DS4.EffectEnabledAbbr": "E", + "DS4.EffectActive": "Active (taking into account whether a potential source item is equipped etc.)", + "DS4.EffectActiveAbbr": "A", + "DS4.EffectName": "Name", + "DS4.EffectSourceName": "Source", + "DS4.EffectFactor": "Factor (the number of times the effect is being applied)", + "DS4.EffectFactorAbbr": "F", + "DS4.ActorName": "Name", + "DS4.ActorImageAltText": "Image of the Actor", + "DS4.ActorTypeCharacter": "Character", + "DS4.ActorTypeCreature": "Creature", + "DS4.Attribute": "Attribute", + "DS4.AttributeBody": "Body", + "DS4.AttributeMobility": "Mobility", + "DS4.AttributeMind": "Mind", + "DS4.Trait": "Trait", + "DS4.TraitStrength": "Strength", + "DS4.TraitConstitution": "Constitution", + "DS4.TraitAgility": "Agility", + "DS4.TraitDexterity": "Dexterity", + "DS4.TraitIntellect": "Intellect", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Hit Points", + "DS4.CombatValuesHitPointsCurrent": "Current Hit Points", + "DS4.CombatValuesHitPointsCurrentAbbr": "HP", + "DS4.CombatValuesDefense": "Defense", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Movement", + "DS4.CombatValuesMeleeAttack": "Melee Attack", + "DS4.CombatValuesRangedAttack": "Ranged Attack", + "DS4.CombatValuesSpellcasting": "Spellcasting", + "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", + "DS4.CombatValuesHitPointsSheet": "Hit Points", + "DS4.CombatValuesDefenseSheet": "Defense", + "DS4.CombatValuesInitiativeSheet": "Initiative", + "DS4.CombatValuesMovementSheet": "Movement", + "DS4.CombatValuesMeleeAttackSheet": "Melee Attack", + "DS4.CombatValuesRangedAttackSheet": "RAT", + "DS4.CombatValuesSpellcastingSheet": "Spellcasting", + "DS4.CombatValuesTargetedSpellcastingSheet": "TSC", + "DS4.CharacterBaseInfoRace": "Race", + "DS4.CharacterBaseInfoClass": "Class", + "DS4.CharacterBaseInfoHeroClass": "Hero Class", + "DS4.CharacterBaseInfoCulture": "Culture", + "DS4.CharacterProgressionLevel": "Level", + "DS4.CharacterProgressionLevelAbbr": "LVL", + "DS4.CharacterProgressionExperiencePoints": "Experience Points", + "DS4.CharacterProgressionExperiencePointsAbbr": "XP", + "DS4.CharacterProgressionTalentPoints": "Talent Points", + "DS4.CharacterProgressionProgressPoints": "Progress Points", + "DS4.CharacterSlayerPoints": "Slayer Points", + "DS4.CharacterSlayerPointsAbbr": "SP", + "DS4.TalentRank": "Rank", + "DS4.SortByTalentRank": "Sort by Rank", + "DS4.TalentRankBase": "Acquired", + "DS4.TalentRankMax": "Maximum", + "DS4.TalentRankMod": "Additional", + "DS4.TalentRankTotal": "Total", + "DS4.CharacterLanguageLanguages": "Languages", + "DS4.CharacterLanguageAlphabets": "Alphabets", + "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", + "DS4.CharacterProfileBiography": "Biography", + "DS4.CharacterProfileGender": "Gender", + "DS4.CharacterProfileBirthday": "Birthday", + "DS4.CharacterProfileBirthplace": "Birthplace", + "DS4.CharacterProfileAge": "Age", + "DS4.CharacterProfileHeight": "Height [m]", + "DS4.CharacterProfileHairColor": "Hair Color", + "DS4.CharacterProfileWeight": "Weight [kg]", + "DS4.CharacterProfileEyeColor": "Eye Color", + "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silver", + "DS4.CharacterCurrencyCopper": "Copper", + "DS4.CharacterCurrency": "Currency", + "DS4.CreatureTypeAnimal": "Animal", + "DS4.CreatureTypeConstruct": "Construct", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magical Entity", + "DS4.CreatureTypePlantBeing": "Plant Being", + "DS4.CreatureTypeUndead": "Undead", + "DS4.CreatureSizeCategoryTiny": "Tiny", + "DS4.CreatureSizeCategorySmall": "Small", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Large", + "DS4.CreatureSizeCategoryHuge": "Huge", + "DS4.CreatureSizeCategoryColossal": "Colossal", + "DS4.CreatureBaseInfoLoot": "Loot", + "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", + "DS4.CreatureBaseInfoCreatureType": "Creature Type", + "DS4.CreatureBaseInfoSizeCategory": "Size Category", + "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", + "DS4.CreatureBaseInfoDescription": "Description", + "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.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.", + "DS4.ErrorInvalidNumberOfDice": "Invalid number of dice.", + "DS4.ErrorInvalidActorType": "Invalid actor type '{type}'.", + "DS4.ErrorInvalidItemType": "Invalid item type '{type}'.", + "DS4.ErrorDuringMigration": "Error while migrating DS4 system from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", + "DS4.ErrorDuringCompendiumMigration": "Error while migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", + "DS4.ErrorCannotRollUnownedItem": "Rolling for item '{name}' ({id})is not possible because it is not owned.", + "DS4.ErrorRollingForItemTypeNotPossible": "Rolling is not possible for items of type '{type}'.", + "DS4.ErrorUnexpectedAttackType": "Unexpected attack type '{actualType}', expected it to be one of: {expectedTypes}", + "DS4.ErrorUnexpectedAttribute": "Unexpected attribute '{actualAttribute}', expected it to be one of: {expectedTypes}", + "DS4.ErrorUnexpectedTrait": "Unexpected trait '{actualTrait}', expected it to be one of: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas is not initialized yet.", + "DS4.ErrorCannotDragMissingCheck": "Trying to drag the check '{check}' but no such check exists.", + "DS4.WarningItemMustBeEquippedToBeRolled": "To roll for item '{name}' ({id}) of type '{type}', it needs to be equipped.", + "DS4.WarningMustControlActorToUseRollItemMacro": "You must control an actor to be able to use a roll item macro.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "You must control an actor to be able to use a roll check macro.", + "DS4.WarningControlledActorDoesNotHaveItem": "Your controlled actor '{actorName}' ({actorId}) does not have any item with the id '{itemId}'.", + "DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.", + "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.", + "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.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.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.UnitRounds": "Rounds", + "DS4.UnitRoundsAbbr": "rnd", + "DS4.UnitMinutes": "Minutes", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Hours", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Days", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meters", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometers", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "Custom Unit", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "Ok", + "DS4.GenericCancelButton": "Cancel", + "DS4.DialogRollOptionsDefaultTitle": "Roll Options", + "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.", + "DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the UUID '{uuid}'.", + "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.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the UUID '{uuid}'.", + "DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number", + "DS4.DialogRollOptionsCheckModifierLabel": "Modifier", + "DS4.DialogRollOptionsCheckModifierCustomLabel": "Custom Modifier", + "DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to", + "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from", + "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.TooltipModifier": "Modifier", + "DS4.TooltipEffects": "Effects", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slaying Dice", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.", + "DS4.SettingShowSlayerPointsName": "Slayer Points", + "DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.", + "DS4.Checks": "Checks", + "DS4.ChecksAppraise": "Appraise", + "DS4.ChecksChangeSpell": "Change Spell", + "DS4.ChecksClimb": "Climb", + "DS4.ChecksCommunicate": "Communicate", + "DS4.ChecksDecipherScript": "Decipher Script", + "DS4.ChecksDefend": "Defend", + "DS4.ChecksDefyPoison": "Defy Poison", + "DS4.ChecksDisableTraps": "Disable Traps", + "DS4.ChecksFeatOfStrength": "Feat of Strength", + "DS4.ChecksFlirt": "Flirt", + "DS4.ChecksHaggle": "Haggle", + "DS4.ChecksHide": "Hide", + "DS4.ChecksIdentifyMagic": "Identify Magic", + "DS4.ChecksJump": "Jump", + "DS4.ChecksKnowledge": "Knowledge", + "DS4.ChecksOpenLock": "Open Lock", + "DS4.ChecksPerception": "Perception", + "DS4.ChecksPickPocket": "Pick Pocket", + "DS4.ChecksReadTracks": "Read Tracks", + "DS4.ChecksResistDisease": "Resist Disease", + "DS4.ChecksRide": "Ride", + "DS4.ChecksSearch": "Search", + "DS4.ChecksSenseMagic": "Sense Magic", + "DS4.ChecksSneak": "Sneak", + "DS4.ChecksStartFire": "Start Fire", + "DS4.ChecksSwim": "Swim", + "DS4.ChecksWakeUp": "Wake Up", + "DS4.ChecksWorkMechanism": "Work Mechanism", + "DS4.ActorCheckFlavor": "{actor} rolls a {check} check.", + "DS4.ActorGenericCheckFlavor": "{actor} rolls a check against {attribute} + {trait}.", + "DS4.CheckTooltip": "Roll a {check} check", + "DS4.NewWeaponName": "New Weapon", + "DS4.NewArmorName": "New Armor", + "DS4.NewShieldName": "New Shield", + "DS4.NewSpellName": "New Spell", + "DS4.NewEquipmentName": "New Equipment", + "DS4.NewLootName": "New Loot", + "DS4.NewTalentName": "New Talent", + "DS4.NewRacialAbilityName": "New Racial Ability", + "DS4.NewLanguageName": "New Language", + "DS4.NewAlphabetName": "New Alphabet", + "DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability", + "DS4.NewEffectName": "New Effect", + + "DS4.ActiveEffectApplyToItems": "Apply to Items", + "DS4.ActiveEffectItemName": "Item Name", + "DS4.ActiveEffectItemCondition": "Condition", + "DS4.TooltipNotEditableDueToEffects": "field not editable, because affected by Active Effects" +} diff --git a/lang/en.json.license b/lang/en.json.license new file mode 100644 index 00000000..ff79d3f7 --- /dev/null +++ b/lang/en.json.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 447b66d0..00000000 --- a/package-lock.json +++ /dev/null @@ -1,7294 +0,0 @@ -{ - "name": "test", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - } - }, - "@types/fs-extra": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz", - "integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/jasmine": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.2.tgz", - "integrity": "sha512-AzfesNFLvOs6Q1mHzIsVJXSeUnqVh4ZHG8ngygKJfbkcSLwzrBVm/LKa+mR8KrOfnWtUL47112gde1MC0IXqpQ==", - "dev": true - }, - "@types/jquery": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.5.tgz", - "integrity": "sha512-6RXU9Xzpc6vxNrS6FPPapN1SxSHgQ336WC6Jj/N8q30OiaBZ00l1GBgeP7usjVZPivSkGUfL1z/WW6TX989M+w==", - "dev": true, - "requires": { - "@types/sizzle": "*" - } - }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", - "dev": true - }, - "@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/sizzle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", - "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", - "dev": true - }, - "@types/socket.io-client": { - "version": "1.4.35", - "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.35.tgz", - "integrity": "sha512-MI8YmxFS+jMkIziycT5ickBWK1sZwDwy16mgH/j99Mcom6zRG/NimNGQ3vJV0uX5G6g/hEw0FG3w3b3sT5OUGw==", - "dev": true - }, - "@types/tinymce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@types/tinymce/-/tinymce-4.6.0.tgz", - "integrity": "sha512-zpW6p/O1CXW9OrDnc+3tlFSGr1+TpTYgudc2vYXgk1KeWwwbK+t3p8cecb1fj0NJN987oMxSoQP13iabBd2fsA==", - "dev": true, - "requires": { - "@types/jquery": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz", - "integrity": "sha512-IJ5e2W7uFNfg4qh9eHkHRUCbgZ8VKtGwD07kannJvM5t/GU8P8+24NX8gi3Hf5jST5oWPY8kyV1s/WtfiZ4+Ww==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.14.0", - "@typescript-eslint/scope-manager": "4.14.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz", - "integrity": "sha512-6i6eAoiPlXMKRbXzvoQD5Yn9L7k9ezzGRvzC/x1V3650rUk3c3AOjQyGYyF9BDxQQDK2ElmKOZRD0CbtdkMzQQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.14.0", - "@typescript-eslint/types": "4.14.0", - "@typescript-eslint/typescript-estree": "4.14.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.14.0.tgz", - "integrity": "sha512-sUDeuCjBU+ZF3Lzw0hphTyScmDDJ5QVkyE21pRoBo8iDl7WBtVFS+WDN3blY1CH3SBt7EmYCw6wfmJjF0l/uYg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.14.0", - "@typescript-eslint/types": "4.14.0", - "@typescript-eslint/typescript-estree": "4.14.0", - "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz", - "integrity": "sha512-/J+LlRMdbPh4RdL4hfP1eCwHN5bAhFAGOTsvE6SxsrM/47XQiPSgF5MDgLyp/i9kbZV9Lx80DW0OpPkzL+uf8Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.14.0", - "@typescript-eslint/visitor-keys": "4.14.0" - } - }, - "@typescript-eslint/types": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.0.tgz", - "integrity": "sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz", - "integrity": "sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.14.0", - "@typescript-eslint/visitor-keys": "4.14.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz", - "integrity": "sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.14.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accord": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/accord/-/accord-0.29.0.tgz", - "integrity": "sha512-3OOR92FTc2p5/EcOzPcXp+Cbo+3C15nV9RXHlOUBCBpHhcB+0frbSNR9ehED/o7sTcyGVtqGJpguToEdlXhD0w==", - "dev": true, - "requires": { - "convert-source-map": "^1.5.0", - "glob": "^7.0.5", - "indx": "^0.2.3", - "lodash.clone": "^4.3.2", - "lodash.defaults": "^4.0.1", - "lodash.flatten": "^4.2.0", - "lodash.merge": "^4.4.0", - "lodash.partialright": "^4.1.4", - "lodash.pick": "^4.2.1", - "lodash.uniq": "^4.3.0", - "resolve": "^1.5.0", - "semver": "^5.3.0", - "uglify-js": "^2.8.22", - "when": "^3.7.8" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - } - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "any-shell-escape": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", - "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archiver": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz", - "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.1.4", - "zip-stream": "^4.0.4" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compress-commons": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.2.tgz", - "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-anything": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.1.tgz", - "integrity": "sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g==", - "dev": true, - "requires": { - "is-what": "^3.7.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dev": true, - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "dependencies": { - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, - "crc32-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz", - "integrity": "sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } - } - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", - "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.3.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", - "integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", - "dev": true - }, - "eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - }, - "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "foundry-pc-types": { - "version": "git+https://git.f3l.de/dungeonslayers/foundry-pc-types.git#5fcca4e4327b558d5eeeb962f05470c994a394be", - "from": "git+https://git.f3l.de/dungeonslayers/foundry-pc-types.git#f3l-fixes", - "dev": true, - "requires": { - "@types/jquery": "^3.5.1", - "@types/socket.io-client": "^1.4.33", - "@types/tinymce": "^4.5.24" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "dependencies": { - "yargs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", - "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "5.0.0-security.0" - } - } - } - } - } - }, - "gulp-git": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/gulp-git/-/gulp-git-2.10.1.tgz", - "integrity": "sha512-qiXYYDXchMZU/AWAgtphi4zbJb/0gXgfPw7TlZwu/7qPS3Bdcc3zbVe1B0xY9S8on6RQTmWoi+KaTGACIXQeNg==", - "dev": true, - "requires": { - "any-shell-escape": "^0.1.1", - "fancy-log": "^1.3.2", - "lodash.template": "^4.4.0", - "plugin-error": "^1.0.1", - "require-dir": "^1.0.0", - "strip-bom-stream": "^3.0.0", - "through2": "^2.0.3", - "vinyl": "^2.0.1" - } - }, - "gulp-less": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz", - "integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==", - "dev": true, - "requires": { - "accord": "^0.29.0", - "less": "2.6.x || ^3.7.1", - "object-assign": "^4.0.1", - "plugin-error": "^0.1.2", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - } - } - }, - "gulp-sass": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.1.0.tgz", - "integrity": "sha512-xIiwp9nkBLcJDpmYHbEHdoWZv+j+WtYaKD6Zil/67F3nrAaZtWYN5mDwerdo7EvcdBenSAj7Xb2hx2DqURLGdA==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "lodash": "^4.17.11", - "node-sass": "^4.8.3", - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "strip-ansi": "^4.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "gulp-typescript": { - "version": "6.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-6.0.0-alpha.1.tgz", - "integrity": "sha512-KoT0TTfjfT7w3JItHkgFH1T/zK4oXWC+a8xxKfniRfVcA0Fa1bKrIhztYelYmb+95RB80OLMBreknYkdwzdi2Q==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1", - "plugin-error": "^1.0.1", - "source-map": "^0.7.3", - "through2": "^3.0.1", - "vinyl": "^2.2.0", - "vinyl-fs": "^3.0.3" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indx": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/indx/-/indx-0.2.3.tgz", - "integrity": "sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-what": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.12.0.tgz", - "integrity": "sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jasmine": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.3.tgz", - "integrity": "sha512-Th91zHsbsALWjDUIiU5d/W5zaYQsZFMPTdeNmi8GivZPmAaUAK8MblSG3yQI4VMGC/abF2us7ex60NH1AAIMTA==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "jasmine-core": "~3.6.0" - } - }, - "jasmine-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", - "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", - "dev": true - }, - "jasmine-reporters": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz", - "integrity": "sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "xmldom": "^0.1.22" - } - }, - "jasmine-xml-reporter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jasmine-xml-reporter/-/jasmine-xml-reporter-1.2.1.tgz", - "integrity": "sha1-fKoqUYAv7+2+JLPqinrUJ8nqfbM=", - "dev": true, - "requires": { - "jasmine-reporters": "^2.2.0" - } - }, - "js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-pretty-compact": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", - "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "less": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", - "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "lint-staged": { - "version": "10.5.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.3.tgz", - "integrity": "sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-truncate": "^2.1.0", - "commander": "^6.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", - "dedent": "^0.7.0", - "enquirer": "^2.3.6", - "execa": "^4.1.0", - "listr2": "^3.2.2", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "listr2": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz", - "integrity": "sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.6.3", - "through": "^2.3.8" - }, - "dependencies": { - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.partialright": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.partialright/-/lodash.partialright-4.2.1.tgz", - "integrity": "sha1-ATDYDoM2MmTUAHTzKbij56ihzEs=", - "dev": true - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "native-request": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz", - "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", - "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "dependencies": { - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - } - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true, - "optional": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "require-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-1.2.0.tgz", - "integrity": "sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.32.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.4.tgz", - "integrity": "sha512-N0BT0PI/t3+gD8jKa83zJJUb7ssfQnRRfqN+GIErokW6U4guBpfYl8qYB+OFLEho+QvnV5ZH1R9qhUC/Z2Ch9w==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sass-graph": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", - "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "semver-regex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", - "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", - "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-bom-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", - "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", - "dev": true, - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom-buf": "^1.0.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "requires": { - "through2": "^2.0.3" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "5.0.0-security.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", - "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zip-stream": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.4.tgz", - "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.0.2", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - } - } -} diff --git a/package.json b/package.json index b6d11272..e58b8862 100644 --- a/package.json +++ b/package.json @@ -1,83 +1,102 @@ { - "private": true, - "name": "test", - "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", - "version": "0.1.0", - "license": "MIT", - "homepage": "https://git.f3l.de/dungeonslayers/ds4", - "repository": { - "type": "git", - "url": "https://git.f3l.de/dungeonslayers/ds4" + "private": true, + "name": "dungeonslayers4", + "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", + "version": "2.0.5", + "license": "https://git.f3l.de/dungeonslayers/ds4#licensing", + "homepage": "https://git.f3l.de/dungeonslayers/ds4", + "repository": { + "type": "git", + "url": "https://git.f3l.de/dungeonslayers/ds4" + }, + "bugs": { + "url": "https://git.f3l.de/dungeonslayers/ds4/issues" + }, + "contributors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de" }, - "bugs": { - "url": "https://git.f3l.de/dungeonslayers/ds4/-/issues" + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" }, - "contributors": [ - { - "name": "Johannes Loher", - "email": "johannes.loher@fg4f.de" - }, - { - "name": "Gesina Schwalbe", - "email": "gesina.schwalbe@pheerai.de" - }, - { - "name": "Oliver Rümpelein", - "email": "foundryvtt@pheerai.de" - }, - { - "name": "Siegfried Krug", - "email": "foundryvtt@asdil1991.de" - } - ], - "scripts": { - "build": "gulp build", - "build:watch": "gulp watch", - "link": "gulp link", - "clean": "gulp clean && gulp link --clean", - "update": "npm install --save-dev git+https://git.f3l.de/dungeonslayers/foundry-pc-types.git#f3l-fixes", - "updateManifest": "gulp updateManifest", - "lint": "eslint 'src/**/*.ts' --cache", - "lint:fix": "eslint 'src/**/*.ts' --cache --fix", - "test": "ts-node ./node_modules/jasmine/bin/jasmine", - "test:ci": "ts-node ./node_modules/jasmine-xml-reporter/bin/jasmine --junitreport", - "format": "prettier --write 'src/**/*.(ts|json|scss)'" + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" }, - "devDependencies": { - "@types/fs-extra": "^9.0.6", - "@types/jasmine": "^3.6.2", - "@typescript-eslint/eslint-plugin": "^4.14.0", - "@typescript-eslint/parser": "^4.14.0", - "archiver": "^5.2.0", - "chalk": "^4.1.0", - "eslint": "^7.18.0", - "eslint-config-prettier": "^7.1.0", - "eslint-plugin-prettier": "^3.3.1", - "foundry-pc-types": "git+https://git.f3l.de/dungeonslayers/foundry-pc-types.git#f3l-fixes", - "fs-extra": "^9.0.1", - "gulp": "^4.0.2", - "gulp-git": "^2.10.1", - "gulp-less": "^4.0.1", - "gulp-sass": "^4.1.0", - "gulp-typescript": "^6.0.0-alpha.1", - "husky": "^4.3.8", - "jasmine": "^3.6.3", - "jasmine-xml-reporter": "^1.2.1", - "json-stringify-pretty-compact": "^2.0.0", - "lint-staged": "^10.5.3", - "prettier": "^2.2.1", - "sass": "^1.32.4", - "ts-node": "^9.1.1", - "typescript": "^4.1.3", - "yargs": "^16.2.0" + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } + { + "name": "Max Tharr" }, - "lint-staged": { - "*.ts": "eslint --cache --fix", - "*.(json|scss)": "prettier --write" + { + "name": "Sascha Martens" } + ], + "type": "module", + "scripts": { + "build": "run-s clean:files build:files", + "build:files": "run-p build:rollup build:packs", + "build:rollup": "rollup -c", + "build:packs": "./tools/packs.sh pack", + "watch": "rollup -c -w", + "link-package": "node ./tools/link-package.js", + "clean": "run-p clean:files clean:link", + "clean:files": "rimraf dist", + "clean:link": "node ./tools/link-package.js --clean", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "format": "pnpm prettier --write", + "format:check": "pnpm prettier --check", + "prettier": "prettier './**/*.(ts|js|cjs|mjs|json|scss|yml|yaml)'", + "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:watch": "tsc --noEmit --watch", + "bump-version": "node ./tools/bump-version.js", + "changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2" + }, + "devDependencies": { + "@commitlint/cli": "19.7.1", + "@commitlint/config-conventional": "19.7.1", + "@eslint/js": "9.21.0", + "@foundryvtt/foundryvtt-cli": "1.0.4", + "@guanghechen/rollup-plugin-copy": "6.0.4", + "@swc/core": "1.10.18", + "@types/fs-extra": "11.0.4", + "@types/jquery": "3.5.32", + "@types/node": "18.19.76", + "conventional-changelog-cli": "5.0.0", + "conventional-changelog-conventionalcommits": "8.0.0", + "eslint": "9.21.0", + "eslint-config-prettier": "10.0.1", + "fs-extra": "11.3.0", + "globals": "16.0.0", + "handlebars": "4.7.8", + "npm-run-all": "4.1.5", + "prettier": "3.5.2", + "rimraf": "6.0.1", + "rollup": "4.34.8", + "rollup-plugin-styler": "2.0.0", + "rollup-plugin-swc3": "0.12.1", + "sass": "1.85.0", + "semver": "7.7.1", + "tslib": "2.8.1", + "typescript": "5.7.3", + "typescript-eslint": "8.24.1", + "vite": "6.1.1", + "vitest": "3.0.6", + "yargs": "17.7.2" + }, + "packageManager": "pnpm@10.4.1", + "pnpm": { + "onlyBuiltDependencies": [ + "@swc/core" + ] + } } diff --git a/package.json.license b/package.json.license new file mode 100644 index 00000000..e37d279b --- /dev/null +++ b/package.json.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver RÜmpelein +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT diff --git a/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json b/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json new file mode 100644 index 00000000..7f36fabd --- /dev/null +++ b/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json @@ -0,0 +1,357 @@ +{ + "_id": "HjpxMlpyjPr3hd3r", + "name": "Adler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/eagle.png", + "items": [ + { + "_id": "9vJL3lyC4RTQCZ7e", + "name": "Krallen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.9vJL3lyC4RTQCZ7e" + }, + { + "_id": "zYQAanmjVsNytqBl", + "name": "Federkleid", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.zYQAanmjVsNytqBl" + }, + { + "_id": "ysyoJA3dYTu4XXvt", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.ysyoJA3dYTu4XXvt" + }, + { + "_id": "k9Ng7RdfvSRN5JVW", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.k9Ng7RdfvSRN5JVW" + }, + { + "_id": "zUXT2ZkY12TAu5CU", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!HjpxMlpyjPr3hd3r.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/eagle.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346489, + "modifiedTime": 1740227862866, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HjpxMlpyjPr3hd3r" +} diff --git a/packs/creatures/Alligator_ttzlBKtMWz981WF3.json b/packs/creatures/Alligator_ttzlBKtMWz981WF3.json new file mode 100644 index 00000000..00931fbd --- /dev/null +++ b/packs/creatures/Alligator_ttzlBKtMWz981WF3.json @@ -0,0 +1,357 @@ +{ + "_id": "ttzlBKtMWz981WF3", + "name": "Alligator", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/alligator-green.png", + "items": [ + { + "_id": "Z4ZEuB2l0vo2dJcK", + "name": "Großer 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": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.Z4ZEuB2l0vo2dJcK" + }, + { + "_id": "ACGvtQk97Udg1rih", + "name": "Schuppenpanzer", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.ACGvtQk97Udg1rih" + }, + { + "_id": "Buv9Nzqx0hpPPsew", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.Buv9Nzqx0hpPPsew" + }, + { + "_id": "ree4HN3j8tv7b18k", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.ree4HN3j8tv7b18k" + }, + { + "_id": "8Aq23UcNNFecGbk9", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!ttzlBKtMWz981WF3.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/alligator*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347112, + "modifiedTime": 1740227862918, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ttzlBKtMWz981WF3" +} diff --git a/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json b/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json new file mode 100644 index 00000000..555f1a58 --- /dev/null +++ b/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json @@ -0,0 +1,1168 @@ +{ + "_id": "8E7Mm0LsiqFm6syY", + "name": "Augenball", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "V7Qw97Fk5MJgijNs", + "name": "Warzenhaut", + "type": "armor", + "sort": 100000, + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.V7Qw97Fk5MJgijNs" + }, + { + "_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": "

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.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.z3o1FUNSKhEWkcpX" + }, + { + "_id": "tKiwh730ZOGMICdg", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.tKiwh730ZOGMICdg" + }, + { + "_id": "SZ8rvHDbY67EqjDN", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 4 zusätzliche Zaubersprüche in jeder Runde aktionsfrei wirken, keinen einzelnen Zauberspruch jedoch mehr als einmal. Abklingzeiten müssen weiterhin berücksichtigt werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.SZ8rvHDbY67EqjDN" + }, + { + "_id": "v6ojDNs7V5QqwKgT", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit 5 von insgesamt 10 Augen gleichzeitig an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.v6ojDNs7V5QqwKgT" + }, + { + "_id": "coIsPp1V166g8IAm", + "name": "Schweben", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.coIsPp1V166g8IAm" + }, + { + "_id": "kY4uQF3t99ANzx5T", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.kY4uQF3t99ANzx5T" + }, + { + "_id": "JMp5LjImHvoKsbGo", + "name": "Kettenblitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", + "effects": [], + "folder": null, + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z" + } + }, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", + "equipped": true, + "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": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 16, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.JMp5LjImHvoKsbGo" + }, + { + "_id": "K3QPHlqz66xolbzw", + "name": "Schleudern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", + "effects": [], + "folder": null, + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.bKCGwIne0uoWZiY0" + } + }, + "system": { + "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE / 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 16, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.bKCGwIne0uoWZiY0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.K3QPHlqz66xolbzw" + }, + { + "_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": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.JldAx8a91vVO2wUf", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.16dN0fMIjJwdhvGF" + }, + { + "_id": "u3CLqxahFyF7kVpa", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" + } + }, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.u3CLqxahFyF7kVpa" + }, + { + "_id": "BkokuzUTP9U6LtBp", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" + } + }, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.BkokuzUTP9U6LtBp" + }, + { + "_id": "lIchGK1m7Y7fMcKG", + "name": "Schutzschild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", + "effects": [], + "folder": null, + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dpz383XbGFXEsGot" + } + }, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dpz383XbGFXEsGot", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.lIchGK1m7Y7fMcKG" + }, + { + "_id": "f0MedvERq1s8hy4z", + "name": "Schutzfeld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", + "effects": [], + "folder": null, + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4" + } + }, + "system": { + "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.f0MedvERq1s8hy4z" + }, + { + "_id": "cnl7AuqByHHjW1zd", + "name": "Telekinese", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r" + } + }, + "system": { + "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro (Stufe x 5) kg Gewicht" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "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": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.cnl7AuqByHHjW1zd" + }, + { + "_id": "D3McezCJz6afqzmR", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" + } + }, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.D3McezCJz6afqzmR" + }, + { + "_id": "bKyT6b0j4wLXbL7O", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" + } + }, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", + "duplicateSource": null + }, + "_key": "!actors.items!8E7Mm0LsiqFm6syY.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346257, + "modifiedTime": 1740227862847, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!8E7Mm0LsiqFm6syY" +} diff --git a/packs/creatures/B_r_InLjj4RGxfkDrtXr.json b/packs/creatures/B_r_InLjj4RGxfkDrtXr.json new file mode 100644 index 00000000..cccee1e8 --- /dev/null +++ b/packs/creatures/B_r_InLjj4RGxfkDrtXr.json @@ -0,0 +1,325 @@ +{ + "_id": "InLjj4RGxfkDrtXr", + "name": "Bär", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/bear-1.png", + "items": [ + { + "_id": "qZayWokGcZreHpfI", + "name": "Pranke", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.qZayWokGcZreHpfI" + }, + { + "_id": "ayDGYJevUkbQ3N0c", + "name": "Fell", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.ayDGYJevUkbQ3N0c" + }, + { + "_id": "PKewYpkEmAWTc1j5", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.PKewYpkEmAWTc1j5" + }, + { + "_id": "WbEsNLQpzoWJlJyj", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!InLjj4RGxfkDrtXr.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/bear*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346499, + "modifiedTime": 1740227862866, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!InLjj4RGxfkDrtXr" +} diff --git a/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json b/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json new file mode 100644 index 00000000..45ed7c2c --- /dev/null +++ b/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json @@ -0,0 +1,389 @@ +{ + "_id": "GVLSLNSoMybeWhBP", + "name": "Basilisk", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/basilisk-green.png", + "items": [ + { + "_id": "y5i2zrZBp74DKQrQ", + "name": "Großer 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": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.y5i2zrZBp74DKQrQ" + }, + { + "_id": "3CFakJA3eQJYSFN7", + "name": "Schuppenpanzer", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.3CFakJA3eQJYSFN7" + }, + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.x7vdeybwnlRnlqTu" + }, + { + "_id": "kQZnCtDlaCaKc38S", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.kQZnCtDlaCaKc38S" + }, + { + "_id": "cZa7Ms69DWYg8Pgz", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.cZa7Ms69DWYg8Pgz" + }, + { + "_id": "Hn8EIElYWelAKxiD", + "name": "Versteinern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", + "duplicateSource": null + }, + "_key": "!actors.items!GVLSLNSoMybeWhBP.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/basilisk*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346388, + "modifiedTime": 1740227862861, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GVLSLNSoMybeWhBP" +} diff --git a/packs/creatures/Baumherr_WboyONCY2UZildi9.json b/packs/creatures/Baumherr_WboyONCY2UZildi9.json new file mode 100644 index 00000000..2d29a1bd --- /dev/null +++ b/packs/creatures/Baumherr_WboyONCY2UZildi9.json @@ -0,0 +1,421 @@ +{ + "_id": "WboyONCY2UZildi9", + "name": "Baumherr", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.CM1yKVLm6mhG2eQE" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.sZw8glq3cnPHu6yq" + }, + { + "_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": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.X9jyAzrnyxuikyg3" + }, + { + "_id": "B1Sw09kZopPZB8ys", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 3 zusätzliche Asthiebe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.B1Sw09kZopPZB8ys" + }, + { + "_id": "x0mAm5abWWHlKJLz", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.x0mAm5abWWHlKJLz" + }, + { + "_id": "2bA1MnqkTTwKtMoS", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.2bA1MnqkTTwKtMoS" + }, + { + "_id": "fKCcOlyaebvj1HuL", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!WboyONCY2UZildi9.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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346710, + "modifiedTime": 1740227862885, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!WboyONCY2UZildi9" +} diff --git a/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json b/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json new file mode 100644 index 00000000..0cd78b36 --- /dev/null +++ b/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json @@ -0,0 +1,190 @@ +{ + "_id": "PKPmkOMLDGwS9QZJ", + "name": "Dämonenfürst", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346629, + "modifiedTime": 1740227862874, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!PKPmkOMLDGwS9QZJ" +} diff --git a/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json b/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json new file mode 100644 index 00000000..cdf26f93 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json @@ -0,0 +1,223 @@ +{ + "_id": "US32MfI48tX5x8Kz", + "name": "Drachenwelpe (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_id": "2lkp7kvBk98s2WcR", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!US32MfI48tX5x8Kz.2lkp7kvBk98s2WcR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346697, + "modifiedTime": 1740227862883, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!US32MfI48tX5x8Kz" +} diff --git a/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json b/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json new file mode 100644 index 00000000..dccb05c5 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json @@ -0,0 +1,255 @@ +{ + "_id": "tchJggykZKx2ctBv", + "name": "Drachenwelpe (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Schallwellen-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!tchJggykZKx2ctBv.yjkoipelFXEzcy1x" + }, + { + "_id": "yTFT0UXNa9s9pbM4", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!tchJggykZKx2ctBv.yTFT0UXNa9s9pbM4" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347091, + "modifiedTime": 1740227862917, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!tchJggykZKx2ctBv" +} diff --git a/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json b/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json new file mode 100644 index 00000000..84f980e6 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json @@ -0,0 +1,255 @@ +{ + "_id": "uomniEHbTAek8ERH", + "name": "Drachenwelpe (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Sandsturm-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!uomniEHbTAek8ERH.yjkoipelFXEzcy1x" + }, + { + "_id": "3wfMRBF49WH74mt2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!uomniEHbTAek8ERH.3wfMRBF49WH74mt2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347121, + "modifiedTime": 1740227862919, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!uomniEHbTAek8ERH" +} diff --git a/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json b/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json new file mode 100644 index 00000000..ad3dfa1a --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json @@ -0,0 +1,223 @@ +{ + "_id": "owGq4n7KX2P1o9em", + "name": "Drachenwelpe (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Licht-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!owGq4n7KX2P1o9em.yjkoipelFXEzcy1x" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346962, + "modifiedTime": 1740227862910, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!owGq4n7KX2P1o9em" +} diff --git a/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json b/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json new file mode 100644 index 00000000..000b3503 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json @@ -0,0 +1,223 @@ +{ + "_id": "kFieLVdVz8XittRw", + "name": "Drachenwelpe (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "qYO8vFpNBw2wQLIJ", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!kFieLVdVz8XittRw.qYO8vFpNBw2wQLIJ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346875, + "modifiedTime": 1740227862900, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!kFieLVdVz8XittRw" +} diff --git a/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json b/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json new file mode 100644 index 00000000..366fc944 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json @@ -0,0 +1,223 @@ +{ + "_id": "7CvWSMFqWHvwajP1", + "name": "Drachenwelpe (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "F5KCKyCC8nD8lrn2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!7CvWSMFqWHvwajP1.F5KCKyCC8nD8lrn2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346249, + "modifiedTime": 1740227862845, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7CvWSMFqWHvwajP1" +} diff --git a/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json b/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json new file mode 100644 index 00000000..668c0565 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json @@ -0,0 +1,190 @@ +{ + "_id": "GeUXlf57uWcGVGRH", + "name": "Drachenwelpe (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346414, + "modifiedTime": 1740227862862, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GeUXlf57uWcGVGRH" +} diff --git a/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json b/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json new file mode 100644 index 00000000..a29a4868 --- /dev/null +++ b/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json @@ -0,0 +1,255 @@ +{ + "_id": "vsKKpweX6I1TQYBj", + "name": "Drachenwelpe (Weiß)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Frost-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!vsKKpweX6I1TQYBj.yjkoipelFXEzcy1x" + }, + { + "_id": "xUH4ga5oyxeT3mW2", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vsKKpweX6I1TQYBj.xUH4ga5oyxeT3mW2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347204, + "modifiedTime": 1740227862921, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vsKKpweX6I1TQYBj" +} diff --git a/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json b/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json new file mode 100644 index 00000000..92702f04 --- /dev/null +++ b/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json @@ -0,0 +1,613 @@ +{ + "_id": "wqgUDJc7Qb28hBBo", + "name": "Drachenwelpe (schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "fogg4p9NQnpcBTUp", + "name": "Mehrere Angriffe", + "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": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.fogg4p9NQnpcBTUp" + }, + { + "_id": "BwxnkXHThNRptudp", + "name": "Panzerschuppen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.BwxnkXHThNRptudp" + }, + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.4JCW7iKb2e9I2ZSj" + }, + { + "_id": "VFP6bNPYcASg0JWE", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.VFP6bNPYcASg0JWE" + }, + { + "_id": "o4o3thrxtXrhRWYT", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.o4o3thrxtXrhRWYT" + }, + { + "_id": "nFNJLYh2O5rOFY89", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.nFNJLYh2O5rOFY89" + }, + { + "_id": "h5HdNw0r06ffdOwr", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.h5HdNw0r06ffdOwr" + }, + { + "_id": "yjkoipelFXEzcy1x", + "name": "Säure-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.yjkoipelFXEzcy1x" + }, + { + "_id": "LHdWF7tVc3uHC0LW", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.LHdWF7tVc3uHC0LW" + }, + { + "_id": "ltDNoswX7EaA2d2X", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.ltDNoswX7EaA2d2X" + }, + { + "_id": "lOr6f4vMoBBOEPB7", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "sort": 1100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.lOr6f4vMoBBOEPB7" + }, + { + "_id": "XsKjxXO7k3vIMyfQ", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 1300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.XsKjxXO7k3vIMyfQ" + }, + { + "_id": "hoqMl7N1bv8BKJA5", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!wqgUDJc7Qb28hBBo.hoqMl7N1bv8BKJA5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:W20+10)", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 255, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Drachenwelpe", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347224, + "modifiedTime": 1740227862923, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wqgUDJc7Qb28hBBo" +} diff --git a/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json b/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json new file mode 100644 index 00000000..c203716b --- /dev/null +++ b/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json @@ -0,0 +1,329 @@ +{ + "_id": "HgTRHAjq1YBk40sO", + "name": "Echsenmensch", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/lizard-man-green-dark.png", + "items": [ + { + "_id": "5X3YrQ6PeuexE5QD", + "name": "Speer", + "type": "weapon", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" + } + }, + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.5X3YrQ6PeuexE5QD" + }, + { + "_id": "CylYyspqzzOiD3QA", + "name": "Schuppenpanzer", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.CylYyspqzzOiD3QA" + }, + { + "_id": "tOY9c09eNSqmJHki", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.tOY9c09eNSqmJHki" + }, + { + "_id": "G0avaPXmxplRB8al", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!HgTRHAjq1YBk40sO.G0avaPXmxplRB8al" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 21 + }, + "defense": { + "mod": 2 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:12, #2B:17", + "foeFactor": 3, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Echsenmensch", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/lizard-man*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346458, + "modifiedTime": 1740227862864, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HgTRHAjq1YBk40sO" +} diff --git a/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json b/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json new file mode 100644 index 00000000..db0c055b --- /dev/null +++ b/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json @@ -0,0 +1,525 @@ +{ + "_id": "SQv63FQBjA5jW5xv", + "name": "Einhorn", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "o8CRX0tj3mrixbeV", + "name": "Mehrere Angriffe", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.o8CRX0tj3mrixbeV" + }, + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.k4syi7gvtjmG6yVt" + }, + { + "_id": "ywm8DSneqBXy2Pk9", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.ywm8DSneqBXy2Pk9" + }, + { + "_id": "RWRBDrcHL1YK6MvZ", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.RWRBDrcHL1YK6MvZ" + }, + { + "_id": "m78risNOMkOZtoix", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff (Horn oder Hufe) in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.m78risNOMkOZtoix" + }, + { + "_id": "WLc6j329EiSfsRj5", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.WLc6j329EiSfsRj5" + }, + { + "_id": "ysPz3YM2HzR9rptL", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.ysPz3YM2HzR9rptL" + }, + { + "_id": "As31RtyHN8S4aN7O", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.As31RtyHN8S4aN7O" + }, + { + "_id": "mwMtV9vS293KeF3Q", + "name": "Spurt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.KUbT1gBeThcLY7vU" + } + }, + "system": { + "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.KUbT1gBeThcLY7vU", + "duplicateSource": null + }, + "_key": "!actors.items!SQv63FQBjA5jW5xv.mwMtV9vS293KeF3Q" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 13, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:12, #2B:17", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 189, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Einhorn", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346679, + "modifiedTime": 1740227862881, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!SQv63FQBjA5jW5xv" +} diff --git a/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json b/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json new file mode 100644 index 00000000..ebc3a4ab --- /dev/null +++ b/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json @@ -0,0 +1,293 @@ +{ + "_id": "mOQ21HFNisTfu7ve", + "name": "Erdelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "VHt6K5ArvzyfTEje", + "name": "Steinpranke", + "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": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.VHt6K5ArvzyfTEje" + }, + { + "_id": "fIoBfLmNCxGfGzEX", + "name": "Steinwesen", + "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": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.fIoBfLmNCxGfGzEX" + }, + { + "_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": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", + "duplicateSource": null + }, + "_key": "!actors.items!mOQ21HFNisTfu7ve.23wk4FP7dNTkLgB5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 22, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 39, + "value": 78 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 124, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar III", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346894, + "modifiedTime": 1740227862904, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!mOQ21HFNisTfu7ve" +} diff --git a/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json b/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json new file mode 100644 index 00000000..dfd9560f --- /dev/null +++ b/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json @@ -0,0 +1,190 @@ +{ + "_id": "S8DNL5XpmNRSNJhD", + "name": "Erdelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 17, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 32 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 15, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 70, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar II", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346676, + "modifiedTime": 1740227862880, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!S8DNL5XpmNRSNJhD" +} diff --git a/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json b/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json new file mode 100644 index 00000000..aabdad52 --- /dev/null +++ b/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json @@ -0,0 +1,190 @@ +{ + "_id": "1PYYg60DHC6RA3oO", + "name": "Erdelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 2, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -13, + "value": 13 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 44, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erdelementar I", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346142, + "modifiedTime": 1740227862839, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!1PYYg60DHC6RA3oO" +} diff --git a/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json b/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json new file mode 100644 index 00000000..e1af749b --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json @@ -0,0 +1,255 @@ +{ + "_id": "e1oy4levSO4VOQx8", + "name": "Erwachsener Drache (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_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": "

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.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU", + "duplicateSource": null + }, + "_key": "!actors.items!e1oy4levSO4VOQx8.pX6BSfPqftBLxuhf" + }, + { + "_id": "6oHGA6nCXRiuAY2O", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!e1oy4levSO4VOQx8.6oHGA6nCXRiuAY2O" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346843, + "modifiedTime": 1740227862898, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!e1oy4levSO4VOQx8" +} diff --git a/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json b/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json new file mode 100644 index 00000000..18100cc8 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json @@ -0,0 +1,190 @@ +{ + "_id": "Ko3jVM757Kr89IQr", + "name": "Erwachsener Drache (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346542, + "modifiedTime": 1740227862868, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Ko3jVM757Kr89IQr" +} diff --git a/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json b/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json new file mode 100644 index 00000000..e0112fc6 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json @@ -0,0 +1,223 @@ +{ + "_id": "bEKen2GJBc6d0nix", + "name": "Erwachsener Drache (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "XdTwK8lRxVvGfKja", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!bEKen2GJBc6d0nix.XdTwK8lRxVvGfKja" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346793, + "modifiedTime": 1740227862891, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!bEKen2GJBc6d0nix" +} diff --git a/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json b/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json new file mode 100644 index 00000000..10dbf9cb --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json @@ -0,0 +1,190 @@ +{ + "_id": "6Ezz8k1SB64HQ9o5", + "name": "Erwachsener Drache (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346215, + "modifiedTime": 1740227862843, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6Ezz8k1SB64HQ9o5" +} diff --git a/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json b/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json new file mode 100644 index 00000000..777b71b2 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json @@ -0,0 +1,223 @@ +{ + "_id": "FYpSMLagk6Qs6MWS", + "name": "Erwachsener Drache (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "3bhEx0YT3KTgl19E", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!FYpSMLagk6Qs6MWS.3bhEx0YT3KTgl19E" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346356, + "modifiedTime": 1740227862857, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!FYpSMLagk6Qs6MWS" +} diff --git a/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json b/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json new file mode 100644 index 00000000..0d792062 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json @@ -0,0 +1,223 @@ +{ + "_id": "7B1AJKsZ9OBmj46R", + "name": "Erwachsener Drache (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "WG8AshF0brFilFXB", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!7B1AJKsZ9OBmj46R.WG8AshF0brFilFXB" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346243, + "modifiedTime": 1740227862845, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7B1AJKsZ9OBmj46R" +} diff --git a/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json b/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json new file mode 100644 index 00000000..fbeb37ba --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json @@ -0,0 +1,223 @@ +{ + "_id": "DoaYEZc7DgLJQ8yg", + "name": "Erwachsener Drache (Schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "YH44ChGg43M1zfJV", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!DoaYEZc7DgLJQ8yg.YH44ChGg43M1zfJV" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346320, + "modifiedTime": 1740227862854, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!DoaYEZc7DgLJQ8yg" +} diff --git a/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json b/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json new file mode 100644 index 00000000..a55b9d82 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json @@ -0,0 +1,223 @@ +{ + "_id": "OsCyBwPcejWRSqLr", + "name": "Erwachsener Drache (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Quecksilber-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!OsCyBwPcejWRSqLr.yjkoipelFXEzcy1x" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346608, + "modifiedTime": 1740227862871, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!OsCyBwPcejWRSqLr" +} diff --git a/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json b/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json new file mode 100644 index 00000000..733bcc64 --- /dev/null +++ b/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json @@ -0,0 +1,223 @@ +{ + "_id": "KlpfMH3L3pL82SSd", + "name": "Erwachsener Drache (Weiss)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "27WSvh2zN2Th7iAs", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!KlpfMH3L3pL82SSd.27WSvh2zN2Th7iAs" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 24, + "mod": 0 + }, + "mobility": { + "base": 16, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 560, + "value": 600 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 11 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", + "foeFactor": 63, + "creatureType": "magicalEntity", + "sizeCategory": "colossal", + "experiencePoints": 907, + "description": "

Drachenarten

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FarbeOdemWesen...
BlauBlitz-...der Dunkelheit
BronzeSchallwellen-...des Lichts
GelbSandsturm-...der Dunkelheit
GoldLicht-...des Lichts
GrünGiftgas-...der Dunkelheit
RotFeuer-...der Dunkelheit
SchwarzSäure-...der Dunkelheit
SilberQuecksilber-...des Lichts
WeissFrost-...der Dunkelheit
" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Erwachsener Drache", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346527, + "modifiedTime": 1740227862868, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!KlpfMH3L3pL82SSd" +} diff --git a/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json b/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json new file mode 100644 index 00000000..b7ecfaf6 --- /dev/null +++ b/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json @@ -0,0 +1,293 @@ +{ + "_id": "Z5eEkZjZ525N90ai", + "name": "Eulerich", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/owldritch-brown.png", + "items": [ + { + "_id": "3yCyEbqp9F3TgJkS", + "name": "Pranke", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.3yCyEbqp9F3TgJkS" + }, + { + "_id": "3L2HJX2p7uIpxTjJ", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.3L2HJX2p7uIpxTjJ" + }, + { + "_id": "gzsgGDcT6pGXHxIZ", + "name": "Federkleid", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z5eEkZjZ525N90ai.gzsgGDcT6pGXHxIZ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 27, + "value": 54 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:14)", + "foeFactor": 11, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 115, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Eulerich", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/owldritch*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346738, + "modifiedTime": 1740227862887, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Z5eEkZjZ525N90ai" +} diff --git a/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json b/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json new file mode 100644 index 00000000..e9421bd4 --- /dev/null +++ b/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json @@ -0,0 +1,190 @@ +{ + "_id": "mPcmJ9nHpy1AbKVr", + "name": "Feuerelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 18, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 6, + "mod": 0 + }, + "constitution": { + "base": 7, + "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": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 24, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 145, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar III", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346897, + "modifiedTime": 1740227862905, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!mPcmJ9nHpy1AbKVr" +} diff --git a/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json b/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json new file mode 100644 index 00000000..3d273fce --- /dev/null +++ b/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json @@ -0,0 +1,190 @@ +{ + "_id": "huPL6cx3RadJNhL0", + "name": "Feuerelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 6, + "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": 0, + "value": 29 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": -2 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 15, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 95, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar II", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346851, + "modifiedTime": 1740227862899, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!huPL6cx3RadJNhL0" +} diff --git a/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json b/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json new file mode 100644 index 00000000..5de33753 --- /dev/null +++ b/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json @@ -0,0 +1,325 @@ +{ + "_id": "tYcKw69Feoy3B6hG", + "name": "Feuerelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "JI4hW2uyULt2cKs2", + "name": "Flammenhieb", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.JI4hW2uyULt2cKs2" + }, + { + "_id": "eofu8kICYeEpxUT1", + "name": "Keine feste Gestalt", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.eofu8kICYeEpxUT1" + }, + { + "_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": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.c95cnrJtMG20InKV" + }, + { + "_id": "xtwmRcp2CEGdK5C6", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!tYcKw69Feoy3B6hG.xtwmRcp2CEGdK5C6" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "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": -12, + "value": 12 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 70, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Feuerelementar I", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347078, + "modifiedTime": 1740227862916, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!tYcKw69Feoy3B6hG" +} diff --git a/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json b/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json new file mode 100644 index 00000000..957b0533 --- /dev/null +++ b/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json @@ -0,0 +1,297 @@ +{ + "_id": "ABiPZtu7q8KhWzXL", + "name": "Fliegendes Schwert", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "iVH3BR6wH35UTmmW", + "name": "Langschwert", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.iVH3BR6wH35UTmmW" + }, + { + "_id": "r0mQXKDTdvRjlSze", + "name": "Metallwesen", + "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": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.r0mQXKDTdvRjlSze" + }, + { + "_id": "XfgWdbwMTVhcS3A9", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!ABiPZtu7q8KhWzXL.XfgWdbwMTVhcS3A9" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "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": -12, + "value": 12 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "small", + "experiencePoints": 57, + "description": "

Herstellung: 1513 GM + Waffenschmied

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Fliegendes Schwert", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346283, + "modifiedTime": 1740227862850, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ABiPZtu7q8KhWzXL" +} diff --git a/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json b/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json new file mode 100644 index 00000000..4d066451 --- /dev/null +++ b/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json @@ -0,0 +1,485 @@ +{ + "_id": "GnW2ELzTtLoJmUQ1", + "name": "Gargyl", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/gargoyle-gray.png", + "items": [ + { + "_id": "XGrSqryhxGUlUJkC", + "name": "Steinklaue", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XGrSqryhxGUlUJkC" + }, + { + "_id": "e28wsq9gdMv8u94N", + "name": "Steinwesen", + "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": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.e28wsq9gdMv8u94N" + }, + { + "_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": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ur7rgX6JTOwscpm5" + }, + { + "_id": "XSowCGPLnuUUt0gb", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XSowCGPLnuUUt0gb" + }, + { + "_id": "IEf4b9ukDhSecShW", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.IEf4b9ukDhSecShW" + }, + { + "_id": "7x3a6bQcUXDNNjfx", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.7x3a6bQcUXDNNjfx" + }, + { + "_id": "ILpCHZ6o5GV4NakU", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ILpCHZ6o5GV4NakU" + }, + { + "_id": "iZL3YxmtOHvZvYgW", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.iZL3YxmtOHvZvYgW" + }, + { + "_id": "FydhkYVuUuHNXzxS", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!GnW2ELzTtLoJmUQ1.FydhkYVuUuHNXzxS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "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:8)", + "foeFactor": 6, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 91, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Gargyl", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/gargoyle*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346440, + "modifiedTime": 1740227862863, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GnW2ELzTtLoJmUQ1" +} diff --git a/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json b/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json new file mode 100644 index 00000000..2e373291 --- /dev/null +++ b/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json @@ -0,0 +1,592 @@ +{ + "_id": "cE5kI3uqXWQrCaI5", + "name": "Geist", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/ghost-1.png", + "items": [ + { + "_id": "EGknWGHQszJHJHnV", + "name": "Geisterklaue", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.EGknWGHQszJHJHnV" + }, + { + "_id": "FR4dQPwgDCH9Ruox", + "name": "Körperlos", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.FR4dQPwgDCH9Ruox" + }, + { + "_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": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.U95WXWQaKfIPiJZK" + }, + { + "_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": "

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.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.QkZT7930qdhuLFxw" + }, + { + "_id": "I31y8QW6HoMJn5Ar", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.I31y8QW6HoMJn5Ar" + }, + { + "_id": "2VOjRedLceEPleW7", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.2VOjRedLceEPleW7" + }, + { + "_id": "2NixNLo8G3DqU3pt", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.2NixNLo8G3DqU3pt" + }, + { + "_id": "DNSCPQ1kOSiiyvOK", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.DNSCPQ1kOSiiyvOK" + }, + { + "_id": "jP3c9iA0GT4gwt3c", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "sort": 1000000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.jP3c9iA0GT4gwt3c" + }, + { + "_id": "02uWHUcM8MBPKqb6", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.02uWHUcM8MBPKqb6" + }, + { + "_id": "YZgaOumzBst1OTtb", + "name": "Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.SgDFje4OTxqPEzoA" + } + }, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.SgDFje4OTxqPEzoA", + "duplicateSource": null + }, + "_key": "!actors.items!cE5kI3uqXWQrCaI5.YZgaOumzBst1OTtb" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 1, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 6, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 27 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 8 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 17, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 245, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Geist", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/ghost*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346804, + "modifiedTime": 1740227862892, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!cE5kI3uqXWQrCaI5" +} diff --git a/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json b/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json new file mode 100644 index 00000000..f96667c2 --- /dev/null +++ b/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json @@ -0,0 +1,360 @@ +{ + "_id": "vXmTcBUKZkB2UBD7", + "name": "Goblin", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/goblin-knife.png", + "items": [ + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.joNh3JSsqfqXk4lU" + }, + { + "_id": "ftCrAdxpJlnc85aU", + "name": "Messer", + "type": "weapon", + "sort": 200000, + "flags": {}, + "effects": [], + "img": "icons/svg/item-bag.svg", + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.ftCrAdxpJlnc85aU" + }, + { + "_id": "G6OoqVDTk9jwOU7r", + "name": "Fellflicken", + "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": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.G6OoqVDTk9jwOU7r" + }, + { + "_id": "uHVUAMh8QgcoNDno", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.uHVUAMh8QgcoNDno" + }, + { + "_id": "yW9EtSEtM40owDQt", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vXmTcBUKZkB2UBD7.yW9EtSEtM40owDQt" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -8, + "value": 8 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:10", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "small", + "experiencePoints": 42, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Goblin", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/goblin*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347151, + "modifiedTime": 1740227862919, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vXmTcBUKZkB2UBD7" +} diff --git a/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json b/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json new file mode 100644 index 00000000..2f088da4 --- /dev/null +++ b/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json @@ -0,0 +1,293 @@ +{ + "_id": "dnX0uQXQCEnGs7dM", + "name": "Golem, Eisen-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Eisenpranke", + "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": 6, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.KzEfCqb54s8Ju7x1" + }, + { + "_id": "HjZd5t1xvRNoHZdX", + "name": "Metallwesen", + "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": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.HjZd5t1xvRNoHZdX" + }, + { + "_id": "clWF2wt2WK7eWuxW", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!dnX0uQXQCEnGs7dM.clWF2wt2WK7eWuxW" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 20, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 36, + "value": 72 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 27, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 173, + "description": "

Herstellung: 3750 GM + Rüstungsschmied

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Eisen-", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346836, + "modifiedTime": 1740227862897, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dnX0uQXQCEnGs7dM" +} diff --git a/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json b/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json new file mode 100644 index 00000000..133141f1 --- /dev/null +++ b/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json @@ -0,0 +1,290 @@ +{ + "_id": "HSgR2FXUmsT2zfIc", + "name": "Golem, Knochen-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Knochenpranke", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.KzEfCqb54s8Ju7x1" + }, + { + "_id": "43U10Znpq4coew6C", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 550000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt vier Armen 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.43U10Znpq4coew6C" + }, + { + "_id": "Lu7kcH5ekEpY8YDU", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "sort": 575000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 4 Armen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", + "duplicateSource": null + }, + "_key": "!actors.items!HSgR2FXUmsT2zfIc.Lu7kcH5ekEpY8YDU" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 20, + "value": 40 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 11, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 148, + "description": "

Herstellung: 2613 GM + Schreinern

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Knochen-", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346447, + "modifiedTime": 1740227862864, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HSgR2FXUmsT2zfIc" +} diff --git a/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json b/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json new file mode 100644 index 00000000..1848719d --- /dev/null +++ b/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json @@ -0,0 +1,336 @@ +{ + "_id": "sCBrVIDh2umWr63g", + "name": "Golem, Kristall-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Kirstallpranke", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.KzEfCqb54s8Ju7x1" + }, + { + "_id": "mJi3ylBo7yPG5vMw", + "name": "Kristallwesen", + "type": "armor", + "sort": 800000, + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.mJi3ylBo7yPG5vMw" + }, + { + "_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": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.Senq5ub2Cx0agJgi", + "duplicateSource": null + }, + "_key": "!actors.items!sCBrVIDh2umWr63g.aa8a89EaVy8fjgLn" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 5, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 21, + "value": 42 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 6 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 10, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 134, + "description": "

Herstellung: 2513 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Kristall-", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347061, + "modifiedTime": 1740227862915, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!sCBrVIDh2umWr63g" +} diff --git a/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json b/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json new file mode 100644 index 00000000..bf0b030e --- /dev/null +++ b/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json @@ -0,0 +1,354 @@ +{ + "_id": "yisaQaEFqduLmAJe", + "name": "Golem, Lehm-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Lehmpranke", + "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": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.KzEfCqb54s8Ju7x1" + }, + { + "_id": "lB0BTGi2Qp2IpbTp", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.lB0BTGi2Qp2IpbTp" + }, + { + "_id": "QTbksMwiH60vH9lT", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.QTbksMwiH60vH9lT" + }, + { + "_id": "7HsvjAKlmOXSvm6e", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.7HsvjAKlmOXSvm6e" + }, + { + "_id": "y8yRArJSJhHTdPXU", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!yisaQaEFqduLmAJe.y8yRArJSJhHTdPXU" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 23, + "value": 46 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 110, + "description": "

Herstellung: 2338 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Lehm-", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347232, + "modifiedTime": 1740227862924, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!yisaQaEFqduLmAJe" +} diff --git a/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json b/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json new file mode 100644 index 00000000..1699a95e --- /dev/null +++ b/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json @@ -0,0 +1,261 @@ +{ + "_id": "cf8BOIAxMKvuxYYW", + "name": "Golem, Stein-", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "KzEfCqb54s8Ju7x1", + "name": "Steinpranke", + "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": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cf8BOIAxMKvuxYYW.KzEfCqb54s8Ju7x1" + }, + { + "_id": "HjZd5t1xvRNoHZdX", + "name": "Steinwesen", + "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": 4, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!cf8BOIAxMKvuxYYW.HjZd5t1xvRNoHZdX" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 18, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 33, + "value": 66 + }, + "defense": { + "mod": 1 + }, + "initiative": { + "mod": 2 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "construct", + "sizeCategory": "large", + "experiencePoints": 160, + "description": "

Herstellung: 3338 GM + Steinmetz

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Golem, Stein-", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346809, + "modifiedTime": 1740227862893, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!cf8BOIAxMKvuxYYW" +} diff --git a/packs/creatures/Hai_7kXHNCARsD0nZCqr.json b/packs/creatures/Hai_7kXHNCARsD0nZCqr.json new file mode 100644 index 00000000..0a055edc --- /dev/null +++ b/packs/creatures/Hai_7kXHNCARsD0nZCqr.json @@ -0,0 +1,322 @@ +{ + "_id": "7kXHNCARsD0nZCqr", + "name": "Hai", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "LddIU7JRhnrzFzgr", + "name": "Großer Biss", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.LddIU7JRhnrzFzgr" + }, + { + "_id": "4QWPtzkl6EncykP4", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.4QWPtzkl6EncykP4" + }, + { + "_id": "ncn9gc2yJOMhWGhb", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.ncn9gc2yJOMhWGhb" + }, + { + "_id": "Q5TlvXVEyjer5YIG", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!7kXHNCARsD0nZCqr.Q5TlvXVEyjer5YIG" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 13, + "value": 39 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:12)", + "foeFactor": 9, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 106, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Hai", + "displayName": 20, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": false, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346252, + "modifiedTime": 1740227862846, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!7kXHNCARsD0nZCqr" +} diff --git a/packs/creatures/Harpyie_s56U2LeRInrje3xh.json b/packs/creatures/Harpyie_s56U2LeRInrje3xh.json new file mode 100644 index 00000000..b8982435 --- /dev/null +++ b/packs/creatures/Harpyie_s56U2LeRInrje3xh.json @@ -0,0 +1,492 @@ +{ + "_id": "s56U2LeRInrje3xh", + "name": "Harpyie", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/harpy-brown.png", + "items": [ + { + "_id": "lwAvXPfZk0RxGnDi", + "name": "Krallenklaue", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.lwAvXPfZk0RxGnDi" + }, + { + "_id": "62o19BMYU8dc4Qwa", + "name": "Federkleid", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.62o19BMYU8dc4Qwa" + }, + { + "_id": "nEwzPUfWSwdHPNIe", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.nEwzPUfWSwdHPNIe" + }, + { + "_id": "mgxKRHjfYd8eRdl4", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.mgxKRHjfYd8eRdl4" + }, + { + "_id": "iJ5vdPZt9tIyY3g4", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.iJ5vdPZt9tIyY3g4" + }, + { + "_id": "6L8whKMrzwGWDTCg", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.6L8whKMrzwGWDTCg" + }, + { + "_id": "GZfpSw5mnT7CLpYH", + "name": "Lockruf", + "type": "spell", + "sort": 800000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.GZfpSw5mnT7CLpYH" + }, + { + "_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": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA", + "duplicateSource": null + }, + "_key": "!actors.items!s56U2LeRInrje3xh.VXyznv68DT2Guc0A" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 6, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 1, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 20 + }, + "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:8)", + "foeFactor": 10, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 128, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Harpyie", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/harpy*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347013, + "modifiedTime": 1740227862913, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!s56U2LeRInrje3xh" +} diff --git a/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json b/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json new file mode 100644 index 00000000..8ee3f983 --- /dev/null +++ b/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json @@ -0,0 +1,580 @@ +{ + "_id": "C4xijAwQdhRHz0Cs", + "name": "Hobgoblin", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/hobgoblin-sword-purple.png", + "items": [ + { + "_id": "wTcga48GOVD8cQV3", + "name": "Kettenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "EkJB0kpYFHRMYSgl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3.EkJB0kpYFHRMYSgl" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0" + } + }, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-", + "equipped": true, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3" + }, + { + "_id": "whLRBkMseej6C3IG", + "name": "Metallhelm", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-reinforced.webp", + "effects": [ + { + "_id": "wlQWjU1kXovR5G1J", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG.wlQWjU1kXovR5G1J" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX" + } + }, + "system": { + "description": "

Initiative -1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG" + }, + { + "_id": "n3SYaxRnVV0nTKtq", + "name": "Holzschild", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j" + } + }, + "system": { + "description": "

Zerbricht bei einem Abwehr-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.n3SYaxRnVV0nTKtq" + }, + { + "_id": "QXzGnyknBZaJqCIc", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.QXzGnyknBZaJqCIc" + }, + { + "_id": "xAd7jo7Ni2KSl16I", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.xAd7jo7Ni2KSl16I" + }, + { + "_id": "MSuVIzM2MRDSyujQ", + "name": "Langschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.MSuVIzM2MRDSyujQ" + }, + { + "_id": "lXtH1PL4nnpzMGkI", + "name": "Kurzbogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-leather.webp", + "effects": [ + { + "_id": "zgiIGlRMVCgAzrn7", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI.zgiIGlRMVCgAzrn7" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.QsnvAep80sSVJToD" + } + }, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.QsnvAep80sSVJToD", + "duplicateSource": null + }, + "_key": "!actors.items!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:18", + "foeFactor": 4, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Hobgoblin", + "displayName": 20, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": true, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/hobgoblin-*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346292, + "modifiedTime": 1740227862851, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!C4xijAwQdhRHz0Cs" +} diff --git a/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json b/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json new file mode 100644 index 00000000..5624094c --- /dev/null +++ b/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json @@ -0,0 +1,190 @@ +{ + "_id": "LtsbT2DHYKs9Catm", + "name": "Hoher Dämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 6, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 3, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 20 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 104, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hoher Dämon", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346576, + "modifiedTime": 1740227862870, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!LtsbT2DHYKs9Catm" +} diff --git a/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json b/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json new file mode 100644 index 00000000..8041f326 --- /dev/null +++ b/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json @@ -0,0 +1,293 @@ +{ + "_id": "Qm2toXbf6EVmvRS1", + "name": "Hund", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dog-pitbull-2.png", + "items": [ + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.j0NbwyhdJPipL7Rl" + }, + { + "_id": "PlB4iu4DBqxypeR0", + "name": "Fell", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.PlB4iu4DBqxypeR0" + }, + { + "_id": "lmc1Llwdx3k697VS", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!Qm2toXbf6EVmvRS1.lmc1Llwdx3k697VS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 31, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hund", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dog*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346645, + "modifiedTime": 1740227862876, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Qm2toXbf6EVmvRS1" +} diff --git a/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json b/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json new file mode 100644 index 00000000..66e2a18a --- /dev/null +++ b/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json @@ -0,0 +1,453 @@ +{ + "_id": "GMUTgcbmahiwgXSj", + "name": "Hydra", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/hydra-blue.png", + "items": [ + { + "_id": "TEjCLP10Mjf8XqCl", + "name": "Großer 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": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.TEjCLP10Mjf8XqCl" + }, + { + "_id": "jcgmsC6XoKcSpu6a", + "name": "Schuppenpanzer", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.jcgmsC6XoKcSpu6a" + }, + { + "_id": "jtnlL78QKAyrNEey", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt sechs Köpfen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.jtnlL78QKAyrNEey" + }, + { + "_id": "dnGDZ0R98VlEskVv", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 6 Köpfen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.dnGDZ0R98VlEskVv" + }, + { + "_id": "KwCXBwhluHD0uHIW", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.KwCXBwhluHD0uHIW" + }, + { + "_id": "CIzNpB4GXHkdFsAI", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.CIzNpB4GXHkdFsAI" + }, + { + "_id": "HOykiW9ZmatUSUKm", + "name": "Regeneration", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.HOykiW9ZmatUSUKm" + }, + { + "_id": "YvT74RD5F3M4DMEx", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!GMUTgcbmahiwgXSj.YvT74RD5F3M4DMEx" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 60, + "value": 90 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 246, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Hydra", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/hydra*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346375, + "modifiedTime": 1740227862860, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GMUTgcbmahiwgXSj" +} diff --git a/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json b/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json new file mode 100644 index 00000000..3cce7a06 --- /dev/null +++ b/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json @@ -0,0 +1,255 @@ +{ + "_id": "nDRdljcZzkonbU0s", + "name": "Jungdrache (Blau)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "items": [ + { + "_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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!nDRdljcZzkonbU0s.yjkoipelFXEzcy1x" + }, + { + "_id": "bH4dBG5AeJ442465", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!nDRdljcZzkonbU0s.bH4dBG5AeJ442465" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346901, + "modifiedTime": 1740227862906, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!nDRdljcZzkonbU0s" +} diff --git a/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json b/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json new file mode 100644 index 00000000..a4428cb2 --- /dev/null +++ b/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json @@ -0,0 +1,190 @@ +{ + "_id": "clsDFbLFEIbh6Mg4", + "name": "Jungdrache (Bronze)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346812, + "modifiedTime": 1740227862894, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!clsDFbLFEIbh6Mg4" +} diff --git a/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json b/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json new file mode 100644 index 00000000..09237540 --- /dev/null +++ b/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json @@ -0,0 +1,223 @@ +{ + "_id": "apBf4qnMODBmEWHU", + "name": "Jungdrache (Gelb)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "items": [ + { + "_id": "d4qTXCVuiStZW2tY", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!apBf4qnMODBmEWHU.d4qTXCVuiStZW2tY" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346771, + "modifiedTime": 1740227862889, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!apBf4qnMODBmEWHU" +} diff --git a/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json b/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json new file mode 100644 index 00000000..f85b9bcc --- /dev/null +++ b/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json @@ -0,0 +1,190 @@ +{ + "_id": "RWNocIHuXIWwUwJu", + "name": "Jungdrache (Gold)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346651, + "modifiedTime": 1740227862878, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!RWNocIHuXIWwUwJu" +} diff --git a/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json b/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json new file mode 100644 index 00000000..a4fb1ecf --- /dev/null +++ b/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json @@ -0,0 +1,287 @@ +{ + "_id": "vsIywRHMnJM7u4ts", + "name": "Jungdrache (Grün)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Giftgas-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.yjkoipelFXEzcy1x" + }, + { + "_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": "

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.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.tWwaC91MGIR4k3Uy" + }, + { + "_id": "CdZkMCsLB0EwUdqv", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!vsIywRHMnJM7u4ts.CdZkMCsLB0EwUdqv" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347174, + "modifiedTime": 1740227862920, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!vsIywRHMnJM7u4ts" +} diff --git a/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json b/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json new file mode 100644 index 00000000..6c4e31d7 --- /dev/null +++ b/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json @@ -0,0 +1,255 @@ +{ + "_id": "htgryhd630WQgeD8", + "name": "Jungdrache (Rot)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "items": [ + { + "_id": "yjkoipelFXEzcy1x", + "name": "Feuer-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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!htgryhd630WQgeD8.yjkoipelFXEzcy1x" + }, + { + "_id": "HFksDdMTR1oh3gDo", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!htgryhd630WQgeD8.HFksDdMTR1oh3gDo" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346846, + "modifiedTime": 1740227862898, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!htgryhd630WQgeD8" +} diff --git a/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json b/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json new file mode 100644 index 00000000..c02625f3 --- /dev/null +++ b/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json @@ -0,0 +1,223 @@ +{ + "_id": "A4zxgFGkMQpm67TR", + "name": "Jungdrache (Schwarz)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "items": [ + { + "_id": "TVxn2FjSGirdC90w", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!A4zxgFGkMQpm67TR.TVxn2FjSGirdC90w" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346280, + "modifiedTime": 1740227862849, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!A4zxgFGkMQpm67TR" +} diff --git a/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json b/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json new file mode 100644 index 00000000..b736f730 --- /dev/null +++ b/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json @@ -0,0 +1,190 @@ +{ + "_id": "3iMmLEmB0NEpyFGd", + "name": "Jungdrache (Silber)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346186, + "modifiedTime": 1740227862841, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!3iMmLEmB0NEpyFGd" +} diff --git a/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json b/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json new file mode 100644 index 00000000..bdace5b5 --- /dev/null +++ b/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json @@ -0,0 +1,223 @@ +{ + "_id": "raKKehH8QctnDtMM", + "name": "Jungdrache (Weiss)", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "items": [ + { + "_id": "frBW7LCCpTlwh7hr", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 1150000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!raKKehH8QctnDtMM.frBW7LCCpTlwh7hr" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 195, + "value": 225 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 5.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", + "foeFactor": 36, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 481, + "description": null + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Jungdrache", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346999, + "modifiedTime": 1740227862912, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!raKKehH8QctnDtMM" +} diff --git a/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json b/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json new file mode 100644 index 00000000..0702e017 --- /dev/null +++ b/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json @@ -0,0 +1,190 @@ +{ + "_id": "LgtcLrKtCa496ih6", + "name": "Kampfdämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 8, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 4, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 4, + "mod": 0 + }, + "aura": { + "base": 4, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 23, + "value": 46 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 152, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kampfdämon", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346560, + "modifiedTime": 1740227862869, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!LgtcLrKtCa496ih6" +} diff --git a/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json b/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json new file mode 100644 index 00000000..5988aed7 --- /dev/null +++ b/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json @@ -0,0 +1,325 @@ +{ + "_id": "FxGhbznQbwd0jRUT", + "name": "Keiler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", + "items": [ + { + "_id": "wQm8AMxYF0NKZhQE", + "name": "Hauer", + "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": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.wQm8AMxYF0NKZhQE" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.DDaq3xgZrGuEl4Dc" + }, + { + "_id": "yru5VWx93wWmOXZA", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.yru5VWx93wWmOXZA" + }, + { + "_id": "DyCGJ2kxHV5QYgWK", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!FxGhbznQbwd0jRUT.DyCGJ2kxHV5QYgWK" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 13, + "value": 38 + }, + "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 1A:10)", + "foeFactor": 6, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 79, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Keiler", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/boar*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346363, + "modifiedTime": 1740227862859, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!FxGhbznQbwd0jRUT" +} diff --git a/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json b/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json new file mode 100644 index 00000000..0549b907 --- /dev/null +++ b/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json @@ -0,0 +1,226 @@ +{ + "_id": "ojzkDbyYSlpHtGHq", + "name": "Kobold", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/kobold-green.png", + "items": [ + { + "_id": "hnuIJBq2btoSK88F", + "name": "Kleiner Knüppel", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!ojzkDbyYSlpHtGHq.hnuIJBq2btoSK88F" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 3, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 1, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 1, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -7, + "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 1B:8)", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "small", + "experiencePoints": 25, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kobold", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/kobold*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346953, + "modifiedTime": 1740227862909, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ojzkDbyYSlpHtGHq" +} diff --git a/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json b/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json new file mode 100644 index 00000000..1f30f523 --- /dev/null +++ b/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json @@ -0,0 +1,190 @@ +{ + "_id": "JGpIh3oCK1Vx3NnZ", + "name": "Kriegsdämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 7, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 5, + "mod": 0 + }, + "dexterity": { + "base": 5, + "mod": 0 + }, + "intellect": { + "base": 5, + "mod": 0 + }, + "aura": { + "base": 5, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 128, + "value": 160 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "magicalEntity", + "sizeCategory": "huge", + "experiencePoints": 297, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kriegsdämon", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346506, + "modifiedTime": 1740227862867, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!JGpIh3oCK1Vx3NnZ" +} diff --git a/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json b/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json new file mode 100644 index 00000000..dae776a2 --- /dev/null +++ b/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json @@ -0,0 +1,325 @@ +{ + "_id": "BIyY1wlxWtJ5FRQJ", + "name": "Kriegselefant", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "5qBHfTnJAXibKNWs", + "name": "Rammen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.5qBHfTnJAXibKNWs" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.OehvVDNjDg4xbsW7" + }, + { + "_id": "QwtwJGcSVFimiHM0", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.QwtwJGcSVFimiHM0" + }, + { + "_id": "iVORjCynScc6kVsS", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.iVORjCynScc6kVsS" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 62, + "value": 93 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": -1 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 16, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 142, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Kriegselefant", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346286, + "modifiedTime": 1740227862850, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!BIyY1wlxWtJ5FRQJ" +} diff --git a/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json b/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json new file mode 100644 index 00000000..bf2a7641 --- /dev/null +++ b/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json @@ -0,0 +1,329 @@ +{ + "_id": "s7yuHMW75JDcFQYB", + "name": "Lebende Rüstung", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "c9cGRVHyd3IPSSbX", + "name": "Langschwert", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" + } + }, + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.c9cGRVHyd3IPSSbX" + }, + { + "_id": "5t0R0cwzApnRQpSR", + "name": "Metallwesen", + "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": 5, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.5t0R0cwzApnRQpSR" + }, + { + "_id": "JxIUfRCSTQ3e5BFg", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.JxIUfRCSTQ3e5BFg" + }, + { + "_id": "SoGfBCWyVZsQGBLk", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!s7yuHMW75JDcFQYB.SoGfBCWyVZsQGBLk" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "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": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 8, + "creatureType": "construct", + "sizeCategory": "normal", + "experiencePoints": 72, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Lebende Rüstung", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347048, + "modifiedTime": 1740227862914, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!s7yuHMW75JDcFQYB" +} diff --git a/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json b/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json new file mode 100644 index 00000000..65534f57 --- /dev/null +++ b/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json @@ -0,0 +1,2027 @@ +{ + "_id": "oVKL6zJ2kYMmBuYx", + "name": "Leichnam", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/lich.png", + "items": [ + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.J2eP8hBIWtgayfhH" + }, + { + "_id": "sNIMYcSm0y83hby7", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNIMYcSm0y83hby7" + }, + { + "_id": "exyyjDtEIdHRcx4n", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.exyyjDtEIdHRcx4n" + }, + { + "_id": "L6i191M3m9QXN9aJ", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [ + { + "_id": "xw1OyyTdDwkNe2jC", + "changes": [ + { + "key": "system.traits.strength.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + }, + { + "key": "system.traits.constitution.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "GEI + AU als Bonus auf Stärke und Härte", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ.xw1OyyTdDwkNe2jC" + } + ], + "folder": null, + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ" + }, + { + "_id": "Yv7u9FcT21lq7xW8", + "name": "Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-purple.webp", + "effects": [ + { + "_id": "Qpy3XcHOokbU7ZaS", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "origin": null, + "tint": "#ffffff", + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": null, + "type": "base", + "system": {}, + "sort": 0, + "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8.Qpy3XcHOokbU7ZaS" + } + ], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B" + } + }, + "system": { + "description": "", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8" + }, + { + "_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": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

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“.

\n

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.

\n

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.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.VjvrapwDmBvGYmfj", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.quDuDAGeMVUvF3WD" + }, + { + "_id": "NeFjvRQWZSKtxAMm", + "name": "Ebenentor", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq" + } + }, + "system": { + "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -8, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 18, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.NeFjvRQWZSKtxAMm" + }, + { + "_id": "1q93yorTXMMaRAcg", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" + } + }, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.1q93yorTXMMaRAcg" + }, + { + "_id": "29SYRu3tP8sSILyX", + "name": "Flammeninferno", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.7ybmodIkWDP1z1D6" + } + }, + "system": { + "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.7ybmodIkWDP1z1D6", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.29SYRu3tP8sSILyX" + }, + { + "_id": "wRp2U7ZSNdZndBmq", + "name": "Frostschock", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3" + } + }, + "system": { + "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "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": "10r", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.wRp2U7ZSNdZndBmq" + }, + { + "_id": "3ybAKe4uHnD5q5zD", + "name": "Gasgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV" + } + }, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.3ybAKe4uHnD5q5zD" + }, + { + "_id": "tYncs86pwaeg5XAl", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" + } + }, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.tYncs86pwaeg5XAl" + }, + { + "_id": "MaTZSyGMQDIMXhLe", + "name": "Kontrollieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.9gc1CF70165NXymH" + } + }, + "system": { + "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis erlöst", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.9gc1CF70165NXymH", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.MaTZSyGMQDIMXhLe" + }, + { + "_id": "bu4UNbRP2WGwKFLg", + "name": "Magisches Schloss", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX" + } + }, + "system": { + "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Schloss geöffnet", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 3, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.bu4UNbRP2WGwKFLg" + }, + { + "_id": "WFfjqz7dfZrxNdOn", + "name": "Netz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.73bT47FtQgPp9Snq" + } + }, + "system": { + "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+ST)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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. / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 4, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.73bT47FtQgPp9Snq", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WFfjqz7dfZrxNdOn" + }, + { + "_id": "h4Xf5AZuuDR1HwdD", + "name": "Schatten", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.5mF59XCsZffF0cSp" + } + }, + "system": { + "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", + "equipped": false, + "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": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "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. / 2", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.5mF59XCsZffF0cSp", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.h4Xf5AZuuDR1HwdD" + }, + { + "_id": "sZicJQ2tu0pHKLT3", + "name": "Schatten erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3" + } + }, + "system": { + "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sZicJQ2tu0pHKLT3" + }, + { + "_id": "80m8uuYxkvkMY8O6", + "name": "Schattenlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv" + } + }, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "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": "0r", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.80m8uuYxkvkMY8O6" + }, + { + "_id": "eVZKdojeGbmnlO7r", + "name": "Springen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG" + } + }, + "system": { + "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.eVZKdojeGbmnlO7r" + }, + { + "_id": "TyemqVxXHyajaeQ0", + "name": "Stolpern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6" + } + }, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", + "equipped": false, + "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": false, + "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": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.TyemqVxXHyajaeQ0" + }, + { + "_id": "8yzQEtT02oPB3gQT", + "name": "Trugbild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.eMilydZd4gqDUsff" + } + }, + "system": { + "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.eMilydZd4gqDUsff", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.8yzQEtT02oPB3gQT" + }, + { + "_id": "WcTIZrzNl287ClsD", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" + } + }, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WcTIZrzNl287ClsD" + }, + { + "_id": "WgItN1MKxhGmbISB", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" + } + }, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WgItN1MKxhGmbISB" + }, + { + "_id": "sNZcw4ywoelqwcFi", + "name": "Wandöffnung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.7foZzrxZuX0dCh3C" + } + }, + "system": { + "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.7foZzrxZuX0dCh3C", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNZcw4ywoelqwcFi" + }, + { + "_id": "m0sMPFGCoDjzT9jz", + "name": "Wolke des Todes", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b" + } + }, + "system": { + "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.m0sMPFGCoDjzT9jz" + }, + { + "_id": "ozbaYB7x9IHkkxz2", + "name": "Zeitstop", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA" + } + }, + "system": { + "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA", + "duplicateSource": null + }, + "_key": "!actors.items!oVKL6zJ2kYMmBuYx.ozbaYB7x9IHkkxz2" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 9, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 8, + "mod": 0 + }, + "aura": { + "base": 8, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 1, + "value": 39 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW #(A:20)x10, #10M:20", + "foeFactor": 26, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 299, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Leichnam", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/lich.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346928, + "modifiedTime": 1740227862908, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!oVKL6zJ2kYMmBuYx" +} diff --git a/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json b/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json new file mode 100644 index 00000000..7c65295a --- /dev/null +++ b/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json @@ -0,0 +1,190 @@ +{ + "_id": "DNbOkqUg7jitTTbw", + "name": "Luftelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 32, + "value": 64 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 16, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 143, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar III", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346310, + "modifiedTime": 1740227862853, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!DNbOkqUg7jitTTbw" +} diff --git a/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json b/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json new file mode 100644 index 00000000..578e3651 --- /dev/null +++ b/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json @@ -0,0 +1,325 @@ +{ + "_id": "wYVw1a5UjPS09YxS", + "name": "Luftelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "PL4rUPVh5MRMW796", + "name": "Luftstoß", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

-1 WB/2 m

", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.PL4rUPVh5MRMW796" + }, + { + "_id": "ghW7FO5d2do95peV", + "name": "Keine feste Gestalt", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.ghW7FO5d2do95peV" + }, + { + "_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": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu", + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.wqzMhcBGP8qbClRW" + }, + { + "_id": "3yeOHhXD8iJrtRJL", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!wYVw1a5UjPS09YxS.3yeOHhXD8iJrtRJL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 5, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 25 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 92, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar II", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347220, + "modifiedTime": 1740227862922, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wYVw1a5UjPS09YxS" +} diff --git a/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json b/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json new file mode 100644 index 00000000..a5d1cf5c --- /dev/null +++ b/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json @@ -0,0 +1,190 @@ +{ + "_id": "CIzMY691MK016h4E", + "name": "Luftelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 68, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Luftelementar I", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346301, + "modifiedTime": 1740227862852, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!CIzMY691MK016h4E" +} diff --git a/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json b/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json new file mode 100644 index 00000000..789b7255 --- /dev/null +++ b/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json @@ -0,0 +1,424 @@ +{ + "_id": "F3zJ4xbHwN9syuK8", + "name": "Medusa", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/medusa-pale.png", + "items": [ + { + "_id": "08rqhbd0eadzrJxS", + "name": "Klauen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.08rqhbd0eadzrJxS" + }, + { + "_id": "YL8uGdXD9QX45OvA", + "name": "Schlangen", + "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": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.YL8uGdXD9QX45OvA" + }, + { + "_id": "3Gxud5Mn5gy97Qie", + "name": "Schuppen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.3Gxud5Mn5gy97Qie" + }, + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.MuXvP2TjwvevxLpo" + }, + { + "_id": "RhdH7ESwq8ukGvTy", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Von den zahlreichen Geschwindigkeit an Wänden und Decken aktionsfrei Schlangen auf ihrem Kopf können jeweils 5 in jeder Runde klettern. Kann auf Gegner herabfallen, wobei Schlagen um Nahkampfgegner angreifen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.RhdH7ESwq8ukGvTy" + }, + { + "_id": "CTAZdf7uuEQ4sWA9", + "name": "Schleudern", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.CTAZdf7uuEQ4sWA9" + }, + { + "_id": "NEEOtiJGhOpZ7RuW", + "name": "Versteinern", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", + "duplicateSource": null + }, + "_key": "!actors.items!F3zJ4xbHwN9syuK8.NEEOtiJGhOpZ7RuW" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 7, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 36 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW A:18), BW #5A:20, #5M:20", + "foeFactor": 18, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 205, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Medusa", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/medusa*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346341, + "modifiedTime": 1740227862856, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!F3zJ4xbHwN9syuK8" +} diff --git a/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json b/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json new file mode 100644 index 00000000..c4f4f929 --- /dev/null +++ b/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json @@ -0,0 +1,395 @@ +{ + "_id": "95N3CQpgVqg4zz0k", + "name": "Minotaurus", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/minotaur-brown.png", + "items": [ + { + "_id": "WnNygCJUgl9nJVDV", + "name": "Massive Keule", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.WnNygCJUgl9nJVDV" + }, + { + "_id": "hZvwSk1wun8Qjlmk", + "name": "Horn", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.hZvwSk1wun8Qjlmk" + }, + { + "_id": "CES4HTOhBcNY0c6G", + "name": "Huf", + "type": "weapon", + "sort": 300000, + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.CES4HTOhBcNY0c6G" + }, + { + "_id": "jhC7DbwCOazDTTVU", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.jhC7DbwCOazDTTVU" + }, + { + "_id": "mOcmV58FSVafekAU", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.mOcmV58FSVafekAU" + }, + { + "_id": "gPsGJGaDRosWvEEL", + "name": "Fell", + "type": "armor", + "sort": 600000, + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!95N3CQpgVqg4zz0k.gPsGJGaDRosWvEEL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 14, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 1, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 1, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 27, + "value": 54 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:16), BW 2B:20", + "foeFactor": 12, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 138, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Minotaurus", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/minotaur*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346270, + "modifiedTime": 1740227862848, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!95N3CQpgVqg4zz0k" +} diff --git a/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json b/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json new file mode 100644 index 00000000..f30f9f65 --- /dev/null +++ b/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json @@ -0,0 +1,392 @@ +{ + "_id": "4276kgAddflo3bwN", + "name": "Monsterspinne", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/monster-spider.png", + "items": [ + { + "_id": "5KumsWj49saU3R8P", + "name": "Spinnenbiss", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.5KumsWj49saU3R8P" + }, + { + "_id": "nU2FCLS66oVDnMkw", + "name": "Netzflüssigkeit", + "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": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.nU2FCLS66oVDnMkw" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.b80BR5n1f6WvGavG" + }, + { + "_id": "v7zlqw9oygaGg5RF", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.v7zlqw9oygaGg5RF" + }, + { + "_id": "vNnnWKNHFzvSlquf", + "name": "Lähmungseffekt", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", + "effects": [], + "folder": null, + "system": { + "description": "

Netzflüssigkeit (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.vNnnWKNHFzvSlquf" + }, + { + "_id": "vYPD5Je4xRUgTqcp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!4276kgAddflo3bwN.vYPD5Je4xRUgTqcp" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 48, + "value": 72 + }, + "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:12)", + "foeFactor": 11, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 165, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Monsterspinne", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/monster-spider.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346201, + "modifiedTime": 1740227862842, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!4276kgAddflo3bwN" +} diff --git a/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json b/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json new file mode 100644 index 00000000..a3b6c944 --- /dev/null +++ b/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json @@ -0,0 +1,485 @@ +{ + "_id": "P3mlpN2JrbnDtLwJ", + "name": "Mumie", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "MxXeRwM7Mw1OqmAC", + "name": "Fäulnispranke", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.MxXeRwM7Mw1OqmAC" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Icq7W8YrjXTIlb7C" + }, + { + "_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": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Kf2kAdMidDaK1SVD" + }, + { + "_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": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.yUtiK9PSMcNcvXfr" + }, + { + "_id": "F3UjrYhsbCLoyFm3", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.F3UjrYhsbCLoyFm3" + }, + { + "_id": "hewKWM2G62KKAj7L", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.hewKWM2G62KKAj7L" + }, + { + "_id": "PFpQT1jYCeKy2yuk", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.PFpQT1jYCeKy2yuk" + }, + { + "_id": "nX0rcnKD1xHYwysw", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.nX0rcnKD1xHYwysw" + }, + { + "_id": "fdt4YJVWp3XylED1", + "name": "Werteverlust (KÖR)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e" + } + }, + "system": { + "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e", + "duplicateSource": null + }, + "_key": "!actors.items!P3mlpN2JrbnDtLwJ.fdt4YJVWp3XylED1" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 4, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 32 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 1 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW #2A:18, #1M:16", + "foeFactor": 18, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 124, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Mumie", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346620, + "modifiedTime": 1740227862873, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!P3mlpN2JrbnDtLwJ" +} diff --git a/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json b/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json new file mode 100644 index 00000000..d86502ca --- /dev/null +++ b/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json @@ -0,0 +1,389 @@ +{ + "_id": "RxSUSzQBSTFYHOlV", + "name": "Niederer Dämon", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "bXEiQJc7aJmLW1K4", + "name": "Pranke", + "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": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.bXEiQJc7aJmLW1K4" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.N6MfjihlDL9hfse6" + }, + { + "_id": "BDsxMEuEKfjEgFk3", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.BDsxMEuEKfjEgFk3" + }, + { + "_id": "AHJhJgRCvw2dKx78", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.AHJhJgRCvw2dKx78" + }, + { + "_id": "DURD01IkVxPAwlxf", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.DURD01IkVxPAwlxf" + }, + { + "_id": "hvOFruV5fmieLXnk", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!RxSUSzQBSTFYHOlV.hvOFruV5fmieLXnk" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 5, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 2, + "mod": 0 + }, + "aura": { + "base": 2, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -8, + "value": 9 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 71, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Niederer Dämon", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346666, + "modifiedTime": 1740227862879, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!RxSUSzQBSTFYHOlV" +} diff --git a/packs/creatures/Oger_QudriM5XZhEC7D6v.json b/packs/creatures/Oger_QudriM5XZhEC7D6v.json new file mode 100644 index 00000000..99a5ad46 --- /dev/null +++ b/packs/creatures/Oger_QudriM5XZhEC7D6v.json @@ -0,0 +1,357 @@ +{ + "_id": "QudriM5XZhEC7D6v", + "name": "Oger", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/ogre-blue.png", + "items": [ + { + "_id": "hYNvoybPpmNB7ldb", + "name": "Massive Keule", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.hYNvoybPpmNB7ldb" + }, + { + "_id": "M90M3KCsByyNno2f", + "name": "Felle", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.M90M3KCsByyNno2f" + }, + { + "_id": "yIAptcyyzAytAPRc", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.yIAptcyyzAytAPRc" + }, + { + "_id": "u8EFs9MhGH4cjqzI", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.u8EFs9MhGH4cjqzI" + }, + { + "_id": "THrZ1zvzJTdJ0413", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!QudriM5XZhEC7D6v.THrZ1zvzJTdJ0413" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 12, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 25, + "value": 50 + }, + "defense": { + "mod": 1 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:8, #1B18", + "foeFactor": 10, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 121, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Oger", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/ogre*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346647, + "modifiedTime": 1740227862877, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!QudriM5XZhEC7D6v" +} diff --git a/packs/creatures/Ork_m9uwTf6binQeuVAb.json b/packs/creatures/Ork_m9uwTf6binQeuVAb.json new file mode 100644 index 00000000..708c437e --- /dev/null +++ b/packs/creatures/Ork_m9uwTf6binQeuVAb.json @@ -0,0 +1,333 @@ +{ + "_id": "m9uwTf6binQeuVAb", + "name": "Ork", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/orc-blue.png", + "items": [ + { + "_id": "YozSzwoqjCJcs2NR", + "name": "Speer", + "type": "weapon", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" + } + }, + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.YozSzwoqjCJcs2NR" + }, + { + "_id": "KlJJytTJybNcvjU3", + "name": "Lederpanzer", + "type": "armor", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx" + } + }, + "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", + "effects": [], + "folder": null, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": true, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.KlJJytTJybNcvjU3" + }, + { + "_id": "rL8UVTzpLdTVqd9W", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.rL8UVTzpLdTVqd9W" + }, + { + "_id": "0x83GMWxMjm02G5r", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!m9uwTf6binQeuVAb.0x83GMWxMjm02G5r" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 23 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 1 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:14, #1B16", + "foeFactor": 2, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 63, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Ork", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/orc*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346888, + "modifiedTime": 1740227862903, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!m9uwTf6binQeuVAb" +} diff --git a/packs/creatures/Pferd_asPZBajREGsJYoht.json b/packs/creatures/Pferd_asPZBajREGsJYoht.json new file mode 100644 index 00000000..35503e95 --- /dev/null +++ b/packs/creatures/Pferd_asPZBajREGsJYoht.json @@ -0,0 +1,258 @@ +{ + "_id": "asPZBajREGsJYoht", + "name": "Pferd", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/horse-white.png", + "items": [ + { + "_id": "fEZBZH6sYKbblf6g", + "name": "Huf, in Notwehr", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!asPZBajREGsJYoht.fEZBZH6sYKbblf6g" + }, + { + "_id": "zsouNfDc7ZOepbeR", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!asPZBajREGsJYoht.zsouNfDc7ZOepbeR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 7, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 101, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Pferd", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/horse*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346777, + "modifiedTime": 1740227862891, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!asPZBajREGsJYoht" +} diff --git a/packs/creatures/Pony_HgfrjXKUApOXvkUX.json b/packs/creatures/Pony_HgfrjXKUApOXvkUX.json new file mode 100644 index 00000000..3f0ff322 --- /dev/null +++ b/packs/creatures/Pony_HgfrjXKUApOXvkUX.json @@ -0,0 +1,258 @@ +{ + "_id": "HgfrjXKUApOXvkUX", + "name": "Pony", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/horse-brown.png", + "items": [ + { + "_id": "jpyXagx6Gqji5I09", + "name": "Huf, in Notwehr", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!HgfrjXKUApOXvkUX.jpyXagx6Gqji5I09" + }, + { + "_id": "7I2yvv1ctfP1BND7", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!HgfrjXKUApOXvkUX.7I2yvv1ctfP1BND7" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 2, + "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": 42, + "value": 63 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 3, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 92, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Pony", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/horse*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346482, + "modifiedTime": 1740227862865, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!HgfrjXKUApOXvkUX" +} diff --git a/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json b/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json new file mode 100644 index 00000000..2e65224d --- /dev/null +++ b/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json @@ -0,0 +1,322 @@ +{ + "_id": "lZgvjMSqh5FuA1JK", + "name": "Ratte", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/rat-brown-2.png", + "items": [ + { + "_id": "CtIA409ycFJcoNdq", + "name": "Spitze Zähne", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.CtIA409ycFJcoNdq" + }, + { + "_id": "LNrmUjNRidA3PoHN", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.LNrmUjNRidA3PoHN" + }, + { + "_id": "XcMeQEVeni94uQWk", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.XcMeQEVeni94uQWk" + }, + { + "_id": "bvbaa9gsGyGocDA0", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!lZgvjMSqh5FuA1JK.bvbaa9gsGyGocDA0" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 2, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 1, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 3 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "tiny", + "experiencePoints": 26, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Ratte", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/rat*.png", + "scaleX": 0.5, + "scaleY": 0.5, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346882, + "modifiedTime": 1740227862901, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!lZgvjMSqh5FuA1JK" +} diff --git a/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json b/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json new file mode 100644 index 00000000..7faef311 --- /dev/null +++ b/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json @@ -0,0 +1,392 @@ +{ + "_id": "PVuNoFILDAHpqGsa", + "name": "Raubkatze", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/feline-predator-panther.png", + "items": [ + { + "_id": "LZJzGcDrnXdAEPkP", + "name": "Pranke", + "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": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.LZJzGcDrnXdAEPkP" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.8Um85s0Ayigqse3B" + }, + { + "_id": "J1JDirHXfexacI9G", + "name": "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.J1JDirHXfexacI9G" + }, + { + "_id": "h9DFDddV6zHABNNR", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.h9DFDddV6zHABNNR" + }, + { + "_id": "X8PG6Z929me6Fewo", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.X8PG6Z929me6Fewo" + }, + { + "_id": "vyDe0soNx67ZePNM", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!PVuNoFILDAHpqGsa.vyDe0soNx67ZePNM" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 1, + "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": 9, + "value": 27 + }, + "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:18)", + "foeFactor": 2, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 84, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Raubkatze", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/feline-predator*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346633, + "modifiedTime": 1740227862875, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!PVuNoFILDAHpqGsa" +} diff --git a/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json b/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json new file mode 100644 index 00000000..94a7a653 --- /dev/null +++ b/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json @@ -0,0 +1,325 @@ +{ + "_id": "GWNFUkgxocfKchIQ", + "name": "Reitkeiler", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", + "items": [ + { + "_id": "nUiNfU3pFgeeoRNR", + "name": "Hauer", + "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": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.nUiNfU3pFgeeoRNR" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.pSQjVkwbjngPoEPZ" + }, + { + "_id": "VfFAFdeQ7jhTlAz1", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.VfFAFdeQ7jhTlAz1" + }, + { + "_id": "MMjbCu5tz7v52LOJ", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!GWNFUkgxocfKchIQ.MMjbCu5tz7v52LOJ" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 35 + }, + "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:10)", + "foeFactor": 5, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 76, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Reitkeiler", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/boar*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346399, + "modifiedTime": 1740227862862, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!GWNFUkgxocfKchIQ" +} diff --git a/packs/creatures/Riese_rULL0cHbyACJsHDC.json b/packs/creatures/Riese_rULL0cHbyACJsHDC.json new file mode 100644 index 00000000..d450cff4 --- /dev/null +++ b/packs/creatures/Riese_rULL0cHbyACJsHDC.json @@ -0,0 +1,360 @@ +{ + "_id": "rULL0cHbyACJsHDC", + "name": "Riese", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.ndjWMSfPfmPY9AUY" + }, + { + "_id": "p8OAUiSFSEBq94mf", + "name": "Geworfener Fels", + "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": "ranged", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.p8OAUiSFSEBq94mf" + }, + { + "_id": "xbi9dJjtVxeUoLK4", + "name": "Felle", + "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": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.xbi9dJjtVxeUoLK4" + }, + { + "_id": "eTfSg6U4xZdJN7ec", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.eTfSg6U4xZdJN7ec" + }, + { + "_id": "nFyr7vCp12na7Z3c", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", + "duplicateSource": null + }, + "_key": "!actors.items!rULL0cHbyACJsHDC.nFyr7vCp12na7Z3c" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 27, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 7, + "mod": 0 + }, + "constitution": { + "base": 7, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 176, + "value": 220 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": -3 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 3 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:20)", + "foeFactor": 30, + "creatureType": "humanoid", + "sizeCategory": "huge", + "experiencePoints": 387, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riese", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346989, + "modifiedTime": 1740227862911, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!rULL0cHbyACJsHDC" +} diff --git a/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json b/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json new file mode 100644 index 00000000..55dec271 --- /dev/null +++ b/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json @@ -0,0 +1,421 @@ +{ + "_id": "QWC9LW1g4aMUHZNc", + "name": "Riesenechse", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-lizard-olive.png", + "items": [ + { + "_id": "0EPSA2vb34Nilg91", + "name": "Grausamer Biss", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.0EPSA2vb34Nilg91" + }, + { + "_id": "2C5NsY0F4qndyWGS", + "name": "Schuppenpanzer", + "type": "armor", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.2C5NsY0F4qndyWGS" + }, + { + "_id": "I5qUZBkW7JLwuCze", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" + } + }, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.I5qUZBkW7JLwuCze" + }, + { + "_id": "xtiIwy6EYYRPkXN9", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.xtiIwy6EYYRPkXN9" + }, + { + "_id": "OBlOP38tzoxwhNuj", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.OBlOP38tzoxwhNuj" + }, + { + "_id": "WiyqJV69YblM42Ot", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.WiyqJV69YblM42Ot" + }, + { + "_id": "T8SibpTZqhohwVkB", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" + } + }, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", + "duplicateSource": null + }, + "_key": "!actors.items!QWC9LW1g4aMUHZNc.T8SibpTZqhohwVkB" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 14, + "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": 179, + "value": 218 + }, + "defense": { + "mod": -10 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:16)", + "foeFactor": 25, + "creatureType": "humanoid", + "sizeCategory": "huge", + "experiencePoints": 316, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Riesenechse", + "displayName": 20, + "actorLink": false, + "width": 3, + "height": 3, + "lockRotation": false, + "rotation": 0, + "alpha": 1, + "disposition": -1, + "displayBars": 40, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": {}, + "randomImg": true, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-lizard*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346636, + "modifiedTime": 1740227862875, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!QWC9LW1g4aMUHZNc" +} diff --git a/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json b/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json new file mode 100644 index 00000000..f3c061a7 --- /dev/null +++ b/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json @@ -0,0 +1,354 @@ +{ + "_id": "Z7Dt5epXbuKn20US", + "name": "Riesenkrake", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "uhUCjZsudH4tikXb", + "name": "Fangarme", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.uhUCjZsudH4tikXb" + }, + { + "_id": "dm1gTdRLMsRP3dYJ", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt sechs Fangarmen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.dm1gTdRLMsRP3dYJ" + }, + { + "_id": "Pk39V01Z4NKJ07oI", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt 6 Fangarmen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg btrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.Pk39V01Z4NKJ07oI" + }, + { + "_id": "JQuu3LzkV71R3eHr", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.JQuu3LzkV71R3eHr" + }, + { + "_id": "E5gJyppsFCHmEQLT", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!Z7Dt5epXbuKn20US.E5gJyppsFCHmEQLT" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 22, + "mod": 0 + }, + "mobility": { + "base": 10, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 8, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 234, + "value": 270 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 4 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 2A:18)", + "foeFactor": 35, + "creatureType": "animal", + "sizeCategory": "huge", + "experiencePoints": 397, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenkrake", + "displayName": 20, + "width": 3, + "height": 3, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346741, + "modifiedTime": 1740227862887, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Z7Dt5epXbuKn20US" +} diff --git a/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json b/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json new file mode 100644 index 00000000..58324987 --- /dev/null +++ b/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json @@ -0,0 +1,322 @@ +{ + "_id": "2MFCw32xgaic6YGx", + "name": "Riesenratte", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-rat-gray.png", + "items": [ + { + "_id": "dVCq0990d0o158yt", + "name": "Scharfe Zähne", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.dVCq0990d0o158yt" + }, + { + "_id": "BQoKmcUMRg4cmoXq", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.BQoKmcUMRg4cmoXq" + }, + { + "_id": "xMPWpgWRrjacTpYQ", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.xMPWpgWRrjacTpYQ" + }, + { + "_id": "EcGjrMRAXOOGHGY1", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!2MFCw32xgaic6YGx.EcGjrMRAXOOGHGY1" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 41, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenratte", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-rat*.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346177, + "modifiedTime": 1740227862840, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!2MFCw32xgaic6YGx" +} diff --git a/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json b/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json new file mode 100644 index 00000000..5056a106 --- /dev/null +++ b/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json @@ -0,0 +1,325 @@ +{ + "_id": "wBgO5Hc4oHKfRN6f", + "name": "Riesenschlange", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/giant-snake-brown.png", + "items": [ + { + "_id": "ndAkzrcRKXbgY9rR", + "name": "Großer 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": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.ndAkzrcRKXbgY9rR" + }, + { + "_id": "vyuWg112c2jjiFgN", + "name": "Schuppenpanzer", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.vyuWg112c2jjiFgN" + }, + { + "_id": "RX89OLfp965CuRDs", + "name": "Gift (1)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U", + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.RX89OLfp965CuRDs" + }, + { + "_id": "2QXz0iopabnNNlQA", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!wBgO5Hc4oHKfRN6f.2QXz0iopabnNNlQA" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 3, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Trophäe (BW 1A:18)", + "foeFactor": 8, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 143, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Riesenschlange", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/giant-snake*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995347214, + "modifiedTime": 1740227862921, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!wBgO5Hc4oHKfRN6f" +} diff --git a/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json b/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json new file mode 100644 index 00000000..5d4e2aff --- /dev/null +++ b/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json @@ -0,0 +1,421 @@ +{ + "_id": "WYvb8G0z5GuNi7kO", + "name": "Rostassel", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/rust-bug.png", + "items": [ + { + "_id": "FQMPNxKTTpOynbsK", + "name": "Tentakelfühler", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.FQMPNxKTTpOynbsK" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.b1YoPObYAlp0qgLo" + }, + { + "_id": "oT9c8PFOqW9NjOKA", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.oT9c8PFOqW9NjOKA" + }, + { + "_id": "OgwADTLcESeGWMih", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann mit seinen insgesamt vier Tentakelfühlern 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.OgwADTLcESeGWMih" + }, + { + "_id": "vZZ50RNjZbkNI0Ha", + "name": "Mehrere Angriffglieder (+3)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "system": { + "description": "

Greift mit insgesamt vier Tentakelfühlern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.vZZ50RNjZbkNI0Ha" + }, + { + "_id": "iuxp4uQYS1XdH0gG", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.iuxp4uQYS1XdH0gG" + }, + { + "_id": "pBC4SwfIsoVZ5Org", + "name": "Rost", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", + "effects": [], + "folder": null, + "system": { + "description": "

Jeder Treffer der Tentakelfühler reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Rostassel treffen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed", + "duplicateSource": null + }, + "_key": "!actors.items!WYvb8G0z5GuNi7kO.pBC4SwfIsoVZ5Org" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "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": 11, + "value": 33 + }, + "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 1A:6)", + "foeFactor": 8, + "creatureType": "animal", + "sizeCategory": "normal", + "experiencePoints": 111, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Rostassel", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/rust-bug.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346701, + "modifiedTime": 1740227862884, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!WYvb8G0z5GuNi7kO" +} diff --git a/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json b/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json new file mode 100644 index 00000000..1e21b984 --- /dev/null +++ b/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json @@ -0,0 +1,389 @@ +{ + "_id": "T9YRYe0vnR4Qg4UM", + "name": "Schatten", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/shadow.png", + "items": [ + { + "_id": "yFI8eLZ0z1PSjGYH", + "name": "Geisterklaue", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.yFI8eLZ0z1PSjGYH" + }, + { + "_id": "PxhF7w8cBdqE2pBa", + "name": "Körperlos", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.PxhF7w8cBdqE2pBa" + }, + { + "_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": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", + "experiencePoints": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.gfZuHfJiCyZUskwn" + }, + { + "_id": "po7mBrqpDWKlXbtu", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.po7mBrqpDWKlXbtu" + }, + { + "_id": "LAAz2aBZoHatDHqJ", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.LAAz2aBZoHatDHqJ" + }, + { + "_id": "6eLzanLV8RG4p2Da", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!T9YRYe0vnR4Qg4UM.6eLzanLV8RG4p2Da" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 11, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 25 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 14, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 126, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schatten", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/shadow.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346694, + "modifiedTime": 1740227862883, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!T9YRYe0vnR4Qg4UM" +} diff --git a/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json b/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json new file mode 100644 index 00000000..d0c21adb --- /dev/null +++ b/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json @@ -0,0 +1,290 @@ +{ + "_id": "iIvMTzBji28VVQ0v", + "name": "Schimmerross", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "NB8EGOwqOiFbSwRT", + "name": "Huf, in Notwehr", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.NB8EGOwqOiFbSwRT" + }, + { + "_id": "EpT6dAyNtbw1l4TN", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.EpT6dAyNtbw1l4TN" + }, + { + "_id": "Di77ms6LCDcCtam5", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!iIvMTzBji28VVQ0v.Di77ms6LCDcCtam5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 9, + "mod": 0 + }, + "mobility": { + "base": 12, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 6, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 44, + "value": 66 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 3.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 106, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schimmerross", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346860, + "modifiedTime": 1740227862899, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!iIvMTzBji28VVQ0v" +} diff --git a/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json b/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json new file mode 100644 index 00000000..ac53a12f --- /dev/null +++ b/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json @@ -0,0 +1,325 @@ +{ + "_id": "6YqxYCWfWVm6c8qM", + "name": "Schlachtross", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/war-horse.png", + "items": [ + { + "_id": "7rFkQfTzgSOYmhNP", + "name": "Huf", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.7rFkQfTzgSOYmhNP" + }, + { + "_id": "DzisICBhJKo3U7PX", + "name": "Rammen", + "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": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.DzisICBhJKo3U7PX" + }, + { + "_id": "Mx15GW5ApV4HImpy", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.Mx15GW5ApV4HImpy" + }, + { + "_id": "VQpngugF60q18Gpp", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!6YqxYCWfWVm6c8qM.VQpngugF60q18Gpp" + } + ], + "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": 4, + "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": "-", + "foeFactor": 9, + "creatureType": "animal", + "sizeCategory": "large", + "experiencePoints": 121, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schlachtross", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/war-horse.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346236, + "modifiedTime": 1740227862844, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6YqxYCWfWVm6c8qM" +} diff --git a/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json b/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json new file mode 100644 index 00000000..d2e7ffd7 --- /dev/null +++ b/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json @@ -0,0 +1,389 @@ +{ + "_id": "XxrCtx56f0njVodK", + "name": "Schlingwurzelbusch", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "eOBJ9tJLFizjQW0e", + "name": "Wurzelhiebe", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.eOBJ9tJLFizjQW0e" + }, + { + "_id": "23MVIoRbK0X5AudH", + "name": "Gehölz", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.23MVIoRbK0X5AudH" + }, + { + "_id": "3YSmdA5G9MS2g4Dn", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.3YSmdA5G9MS2g4Dn" + }, + { + "_id": "0QUScCjMSupBxEo4", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann 4 zusätzliche Hiebe mit seinen unzähligen Wurzeln in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.0QUScCjMSupBxEo4" + }, + { + "_id": "uoE0EQZy2aEQGJWp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.uoE0EQZy2aEQGJWp" + }, + { + "_id": "SMDvuSaB2M06xcg5", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!XxrCtx56f0njVodK.SMDvuSaB2M06xcg5" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "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": 10, + "value": 30 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "Lediglich Brennholz", + "foeFactor": 7, + "creatureType": "plantBeing", + "sizeCategory": "normal", + "experiencePoints": 122, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schlingwurzelbusch", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346736, + "modifiedTime": 1740227862886, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!XxrCtx56f0njVodK" +} diff --git a/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json b/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json new file mode 100644 index 00000000..20c77fca --- /dev/null +++ b/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json @@ -0,0 +1,255 @@ +{ + "_id": "ZZEBR9R04TlNXU5q", + "name": "Schwarm", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "2Da0MbWQ8gy1WXBI", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!ZZEBR9R04TlNXU5q.2Da0MbWQ8gy1WXBI" + }, + { + "_id": "pII9BR3ndtlMaL4l", + "name": "Schwarm", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp", + "duplicateSource": null + }, + "_key": "!actors.items!ZZEBR9R04TlNXU5q.pII9BR3ndtlMaL4l" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 0, + "mod": 0 + }, + "mobility": { + "base": 0, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "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": -10, + "value": 0 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 8 + }, + "movement": { + "mod": 6.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 5, + "creatureType": "animal", + "sizeCategory": "small", + "experiencePoints": 68, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Schwarm", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346763, + "modifiedTime": 1740227862889, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ZZEBR9R04TlNXU5q" +} diff --git a/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json b/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json new file mode 100644 index 00000000..246e6c96 --- /dev/null +++ b/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json @@ -0,0 +1,290 @@ +{ + "_id": "Rvu16XzEjizdqNsu", + "name": "Skelett", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/skeleton-green.png", + "items": [ + { + "_id": "PhvbJ2VSw3ivWS3F", + "name": "Knochenklaue", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.PhvbJ2VSw3ivWS3F" + }, + { + "_id": "jmoVrv9FCX28B4PJ", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.jmoVrv9FCX28B4PJ" + }, + { + "_id": "e5PbQLkYj3kldXil", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!Rvu16XzEjizdqNsu.e5PbQLkYj3kldXil" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 10, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 22 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 4, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 72, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Skelett", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/skeleton*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346657, + "modifiedTime": 1740227862879, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Rvu16XzEjizdqNsu" +} diff --git a/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json b/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json new file mode 100644 index 00000000..d41a8f34 --- /dev/null +++ b/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json @@ -0,0 +1,358 @@ +{ + "_id": "dFL9UUXHq9heme4T", + "name": "Tentakelhirn", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "DuBcMQTb1e7mIe79", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 100000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.DuBcMQTb1e7mIe79" + }, + { + "_id": "z80WCPwmoMsdzYWD", + "name": "Schweben", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.z80WCPwmoMsdzYWD" + }, + { + "_id": "8lyV8jx9ZVqPA4kF", + "name": "Werteverlust (GEI)", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "system": { + "description": "

Pro schadensverursachenden Treffer mit dem Gedankenzehrerstrahl-Zauber wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki", + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.8lyV8jx9ZVqPA4kF" + }, + { + "_id": "3sJtgHHEkOmTNLEL", + "name": "Gedankenzehrerstrahl", + "type": "spell", + "sort": 400000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Nicht sichtbar; verursacht mental Schaden und führt zu Werteverlust

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dFL9UUXHq9heme4T.3sJtgHHEkOmTNLEL" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 2, + "mod": 0 + }, + "constitution": { + "base": 1, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -4, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 2 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 10 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 7, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 89, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Tentakelhirn", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346817, + "modifiedTime": 1740227862895, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dFL9UUXHq9heme4T" +} diff --git a/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json b/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json new file mode 100644 index 00000000..c4148e5d --- /dev/null +++ b/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json @@ -0,0 +1,273 @@ +{ + "_id": "22pkyKnZoRLG0nnY", + "name": "Teufelchen III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "W2e5m1533YiEPsdg", + "name": "Feuerstrahl", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.spells.kudkdrpMU0C83vM7" + } + }, + "system": { + "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", + "equipped": true, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "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 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.spells.kudkdrpMU0C83vM7", + "duplicateSource": null + }, + "_key": "!actors.items!22pkyKnZoRLG0nnY.W2e5m1533YiEPsdg" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 4, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 3, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 6, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -7, + "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": "", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 44, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "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, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346173, + "modifiedTime": 1740227862840, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!22pkyKnZoRLG0nnY" +} diff --git a/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json b/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json new file mode 100644 index 00000000..2273130f --- /dev/null +++ b/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json @@ -0,0 +1,197 @@ +{ + "_id": "SxbO1iTrXYGbdMoC", + "name": "Teufelchen II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 5, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 4, + "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": -11, + "value": 11 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "", + "foeFactor": 5, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 48, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "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, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346686, + "modifiedTime": 1740227862882, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!SxbO1iTrXYGbdMoC" +} diff --git a/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json b/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json new file mode 100644 index 00000000..328580b8 --- /dev/null +++ b/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json @@ -0,0 +1,266 @@ +{ + "_id": "aqbcBjeCJUHJ5uVj", + "name": "Teufelchen I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "L9utJ9BJSLkYbUjN", + "name": "Fliegen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!aqbcBjeCJUHJ5uVj.L9utJ9BJSLkYbUjN" + }, + { + "_id": "OaZjNMhyCyxRKA8C", + "name": "Krallen", + "type": "weapon", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0, + "action": "create" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!aqbcBjeCJUHJ5uVj.OaZjNMhyCyxRKA8C" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 7, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 1, + "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": -9, + "value": 9 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "", + "foeFactor": 4, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 35, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "name": "Teufelchen I", + "displayName": 0, + "actorLink": false, + "width": 1, + "height": 1, + "lockRotation": false, + "rotation": 0, + "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, + "negative": false, + "priority": 0 + }, + "disposition": -1, + "displayBars": 0, + "bar1": { + "attribute": "combatValues.hitPoints" + }, + "bar2": { + "attribute": null + }, + "flags": { + "darkness-dependent-vision": { + "dimVisionDarknessMin": null, + "dimVisionDarknessMax": null, + "brightVisionDarknessMin": null, + "brightVisionDarknessMax": null + } + }, + "randomImg": false, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346774, + "modifiedTime": 1740227862890, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!aqbcBjeCJUHJ5uVj" +} diff --git a/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json b/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json new file mode 100644 index 00000000..91ebc5cf --- /dev/null +++ b/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json @@ -0,0 +1,556 @@ +{ + "_id": "6KmAeL9lVxWXIeU6", + "name": "Todesfee", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "0tHp37tNXFa9akK0", + "name": "Geisterklaue", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.0tHp37tNXFa9akK0" + }, + { + "_id": "quc1WJJwo4UMlkg3", + "name": "Körperlos", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.quc1WJJwo4UMlkg3" + }, + { + "_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": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.U6mQ5sQwMjdLgUww" + }, + { + "_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": "

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.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.IolX9qsFGSxYN38o" + }, + { + "_id": "w1h6K90G0l0RXQy5", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.w1h6K90G0l0RXQy5" + }, + { + "_id": "eSMM4Zq5UPWN31iB", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.eSMM4Zq5UPWN31iB" + }, + { + "_id": "VHUCIwHGz93rL2db", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.VHUCIwHGz93rL2db" + }, + { + "_id": "vcdY5BrydMFLsnRU", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 900000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.vcdY5BrydMFLsnRU" + }, + { + "_id": "We3eGY2UjINy3lRZ", + "name": "Wehklagen", + "type": "spell", + "sort": 1000000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

Jeder im Umkreis von 9 m um die Todesfee erleidet nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": true, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "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": true + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "9", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.We3eGY2UjINy3lRZ" + }, + { + "_id": "aTr4fC2AuCJ5PLGF", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [], + "folder": null, + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" + } + }, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", + "duplicateSource": null + }, + "_key": "!actors.items!6KmAeL9lVxWXIeU6.aTr4fC2AuCJ5PLGF" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 10, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 3, + "mod": 0 + }, + "aura": { + "base": 9, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 35 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 23, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 284, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Todesfee", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346224, + "modifiedTime": 1740227862843, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!6KmAeL9lVxWXIeU6" +} diff --git a/packs/creatures/Troll_EItxqEiDUOmJdy4n.json b/packs/creatures/Troll_EItxqEiDUOmJdy4n.json new file mode 100644 index 00000000..e87e939f --- /dev/null +++ b/packs/creatures/Troll_EItxqEiDUOmJdy4n.json @@ -0,0 +1,456 @@ +{ + "_id": "EItxqEiDUOmJdy4n", + "name": "Troll", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/troll-blue.png", + "items": [ + { + "_id": "k4z8YIPc1sSdgAuf", + "name": "Massive Keule", + "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": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.k4z8YIPc1sSdgAuf" + }, + { + "_id": "SUbNCeLDrM29kOjI", + "name": "Geworfener Fels", + "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": "ranged", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.SUbNCeLDrM29kOjI" + }, + { + "_id": "2t0pWjoVV6V1XL7m", + "name": "Warzenhaut", + "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": 2, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.2t0pWjoVV6V1XL7m" + }, + { + "_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": "

Erhält doppelten Schaden durch Lichtangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.XBYL6p6Lh2di3cL0" + }, + { + "_id": "ut3GaXn0lU6CJO2f", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.ut3GaXn0lU6CJO2f" + }, + { + "_id": "wxRyDYdcYDvfRLsw", + "name": "Regeneration", + "type": "specialCreatureAbility", + "sort": 600000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.wxRyDYdcYDvfRLsw" + }, + { + "_id": "hutBK3nVQ2TZBivP", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.hutBK3nVQ2TZBivP" + }, + { + "_id": "275bgVmTqYULPH3V", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!EItxqEiDUOmJdy4n.275bgVmTqYULPH3V" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 16, + "mod": 0 + }, + "mobility": { + "base": 6, + "mod": 0 + }, + "mind": { + "base": 2, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 4, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 1, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 30, + "value": 60 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 3 + }, + "movement": { + "mod": 1 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "#BW 1B16", + "foeFactor": 14, + "creatureType": "humanoid", + "sizeCategory": "large", + "experiencePoints": 202, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Troll", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/troll*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346327, + "modifiedTime": 1740227862855, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!EItxqEiDUOmJdy4n" +} diff --git a/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json b/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json new file mode 100644 index 00000000..171b71e7 --- /dev/null +++ b/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json @@ -0,0 +1,456 @@ +{ + "_id": "O2maANGDJHPLX8aE", + "name": "Unwolf", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", + "items": [ + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.9olbXmWVzPkmPhvu" + }, + { + "_id": "p3zhDhgstlj2JMxe", + "name": "Feuerodem", + "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": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.p3zhDhgstlj2JMxe" + }, + { + "_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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.hcB5LcidhVSW5rI7" + }, + { + "_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": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.MPb5ZrTIutJ291XD" + }, + { + "_id": "fMULyKcCpn2tVMPO", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.fMULyKcCpn2tVMPO" + }, + { + "_id": "qLG2ZZPYGAbLzpBf", + "name": "Odem", + "type": "specialCreatureAbility", + "sort": 600000, + "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": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.qLG2ZZPYGAbLzpBf" + }, + { + "_id": "4851TNs45Q3hSrU1", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 700000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.4851TNs45Q3hSrU1" + }, + { + "_id": "NXxoBj91nyeyBm4M", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 800000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!O2maANGDJHPLX8aE.NXxoBj91nyeyBm4M" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 2, + "mod": 0 + }, + "agility": { + "base": 2, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 12, + "value": 35 + }, + "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 1A:16)", + "foeFactor": 7, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 115, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Unwolf", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346597, + "modifiedTime": 1740227862870, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!O2maANGDJHPLX8aE" +} diff --git a/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json b/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json new file mode 100644 index 00000000..008522ab --- /dev/null +++ b/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json @@ -0,0 +1,354 @@ +{ + "_id": "lys4bJc7GL5f5ORp", + "name": "Vampirfledermaus", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", + "items": [ + { + "_id": "G08O3BP9HQ0mLjAQ", + "name": "Krallen", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.G08O3BP9HQ0mLjAQ" + }, + { + "_id": "hdTEWmE6saO2W7FI", + "name": "Sonar", + "type": "specialCreatureAbility", + "sort": 200000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", + "effects": [], + "folder": null, + "system": { + "description": "

„Sieht“ per Sonar.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.hdTEWmE6saO2W7FI" + }, + { + "_id": "OfL0gyUOJjAOW3xA", + "name": "Fliegen", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.OfL0gyUOJjAOW3xA" + }, + { + "_id": "eH5vkCneA5sLHkmp", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.eH5vkCneA5sLHkmp" + }, + { + "_id": "1zKUlljm7MEYc3l8", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", + "duplicateSource": null + }, + "_key": "!actors.items!lys4bJc7GL5f5ORp.1zKUlljm7MEYc3l8" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 5, + "mod": 0 + }, + "mobility": { + "base": 4, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 2, + "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": -13, + "value": 4 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 1, + "creatureType": "animal", + "sizeCategory": "tiny", + "experiencePoints": 55, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Vampirfledermaus", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", + "scaleX": 0.5, + "scaleY": 0.5, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346885, + "modifiedTime": 1740227862902, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!lys4bJc7GL5f5ORp" +} diff --git a/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json b/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json new file mode 100644 index 00000000..df31a746 --- /dev/null +++ b/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json @@ -0,0 +1,325 @@ +{ + "_id": "dlrDPQ3is4NkzZJB", + "name": "Wasserelementar III", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [ + { + "_id": "HPT4hAgQnGf1gbJR", + "name": "Wasserstrahl", + "type": "weapon", + "sort": 100000, + "flags": {}, + "img": "icons/svg/mystery-man.svg", + "effects": [], + "folder": null, + "system": { + "description": "

-1 WB / 2 Meter

", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": true, + "attackType": "meleeRanged", + "weaponBonus": 4, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.HPT4hAgQnGf1gbJR" + }, + { + "_id": "OIKYSareGFhHJxAB", + "name": "Keine feste Gestalt", + "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": 8, + "armorMaterialType": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.OIKYSareGFhHJxAB" + }, + { + "_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": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.NKUKD1KfNTpKZygj" + }, + { + "_id": "VCmj5YFjcDb1Slay", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", + "duplicateSource": null + }, + "_key": "!actors.items!dlrDPQ3is4NkzZJB.VCmj5YFjcDb1Slay" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 15, + "mod": 0 + }, + "mobility": { + "base": 9, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 5, + "mod": 0 + }, + "constitution": { + "base": 6, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 4, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 31, + "value": 62 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0.5 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 16, + "creatureType": "magicalEntity", + "sizeCategory": "large", + "experiencePoints": 133, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar III", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 1, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346824, + "modifiedTime": 1740227862896, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!dlrDPQ3is4NkzZJB" +} diff --git a/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json b/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json new file mode 100644 index 00000000..b9bb0cbc --- /dev/null +++ b/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json @@ -0,0 +1,190 @@ +{ + "_id": "Xn7g2PB1rXvllwRi", + "name": "Wasserelementar II", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 11, + "mod": 0 + }, + "mobility": { + "base": 8, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 4, + "mod": 0 + }, + "constitution": { + "base": 3, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 3, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 24 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 9, + "creatureType": "magicalEntity", + "sizeCategory": "normal", + "experiencePoints": 83, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar II", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346733, + "modifiedTime": 1740227862885, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!Xn7g2PB1rXvllwRi" +} diff --git a/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json b/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json new file mode 100644 index 00000000..466d8197 --- /dev/null +++ b/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json @@ -0,0 +1,190 @@ +{ + "_id": "ZJF6ieo8O0GXfgwz", + "name": "Wasserelementar I", + "type": "creature", + "img": "icons/svg/mystery-man.svg", + "items": [], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 6, + "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": 0, + "mod": 0 + }, + "dexterity": { + "base": 2, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": -9, + "value": 10 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "-", + "foeFactor": 3, + "creatureType": "magicalEntity", + "sizeCategory": "small", + "experiencePoints": 60, + "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wasserelementar I", + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "icons/svg/mystery-man.svg", + "scaleX": 0.7, + "scaleY": 0.7, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346750, + "modifiedTime": 1740227862888, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!ZJF6ieo8O0GXfgwz" +} diff --git a/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json b/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json new file mode 100644 index 00000000..4a52681b --- /dev/null +++ b/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json @@ -0,0 +1,357 @@ +{ + "_id": "nZ9u6G3D3Q9oUXM8", + "name": "Wolf", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/wolf-2.png", + "items": [ + { + "_id": "CbeR35FgiGzc1xtl", + "name": "Kräftiger 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": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.CbeR35FgiGzc1xtl" + }, + { + "_id": "PZ9G8IZoP5eiPQEx", + "name": "Wolfspelz", + "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": "natural", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PZ9G8IZoP5eiPQEx" + }, + { + "_id": "ZDZ9qHG17DjQWhSE", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.ZDZ9qHG17DjQWhSE" + }, + { + "_id": "nvwGqdzQA4Mf37Ci", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.nvwGqdzQA4Mf37Ci" + }, + { + "_id": "PQZ9xUYQyQHv8gEy", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", + "duplicateSource": null + }, + "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PQZ9xUYQyQHv8gEy" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 8, + "mod": 0 + }, + "mobility": { + "base": 7, + "mod": 0 + }, + "mind": { + "base": 1, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "mod": 0 + }, + "constitution": { + "base": 1, + "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": 10, + "value": 29 + }, + "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 1A:10)", + "foeFactor": 2, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 81, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Wolf", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/wolf*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346909, + "modifiedTime": 1740227862907, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!nZ9u6G3D3Q9oUXM8" +} diff --git a/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json b/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json new file mode 100644 index 00000000..fb1cbd87 --- /dev/null +++ b/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json @@ -0,0 +1,357 @@ +{ + "_id": "rLUCyWfSBebB8cSC", + "name": "Zombie", + "type": "creature", + "img": "systems/ds4/assets/tokens/devin-night/zombie-female-red.png", + "items": [ + { + "_id": "NdunVanOXm7hG0rX", + "name": "Fäulnispranke", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.NdunVanOXm7hG0rX" + }, + { + "_id": "ZjRYyfjMWlmtGUJ0", + "name": "Merkt nichts", + "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": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.ZjRYyfjMWlmtGUJ0" + }, + { + "_id": "HT4yv3mKyIcwaLKr", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "sort": 300000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.HT4yv3mKyIcwaLKr" + }, + { + "_id": "rCzeYlfYzbGpNQOe", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "sort": 400000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.rCzeYlfYzbGpNQOe" + }, + { + "_id": "Y2r3v6U8Grn619HR", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "sort": 500000, + "flags": { + "core": { + "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" + } + }, + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": null, + "systemVersion": null, + "coreVersion": "12.331", + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", + "duplicateSource": null + }, + "_key": "!actors.items!rLUCyWfSBebB8cSC.Y2r3v6U8Grn619HR" + } + ], + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "attributes": { + "body": { + "base": 13, + "mod": 0 + }, + "mobility": { + "base": 3, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 3, + "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": 0, + "value": 28 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + }, + "baseInfo": { + "loot": "BW 1B:4", + "foeFactor": 10, + "creatureType": "undead", + "sizeCategory": "normal", + "experiencePoints": 78, + "description": "" + } + }, + "ownership": { + "default": 0 + }, + "prototypeToken": { + "flags": {}, + "name": "Zombie", + "displayName": 20, + "width": 1, + "height": 1, + "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, + "negative": false, + "priority": 0 + }, + "texture": { + "src": "systems/ds4/assets/tokens/devin-night/zombie*.png", + "scaleX": 1, + "scaleY": 1, + "offsetX": 0, + "offsetY": 0, + "rotation": 0, + "tint": "#ffffff", + "anchorX": 0.5, + "anchorY": 0.5, + "fit": "contain", + "alphaThreshold": 0.75 + }, + "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, + "hexagonalShape": 0, + "occludable": { + "radius": 0 + }, + "ring": { + "enabled": false, + "colors": { + "ring": null, + "background": null + }, + "effects": 1, + "subject": { + "scale": 1, + "texture": null + } + } + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995346978, + "modifiedTime": 1740227862910, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!actors!rLUCyWfSBebB8cSC" +} diff --git a/packs/items/Abklingring_2XfoxOYNOTar9OAt.json b/packs/items/Abklingring_2XfoxOYNOTar9OAt.json new file mode 100644 index 00000000..00fe90a0 --- /dev/null +++ b/packs/items/Abklingring_2XfoxOYNOTar9OAt.json @@ -0,0 +1,32 @@ +{ + "_id": "2XfoxOYNOTar9OAt", + "name": "Abklingring", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-silver.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser einfache Abklingring senkt die Abklingzeit sämtlicher Zauber seines Trägers um 1.

", + "quantity": 1, + "price": 5252, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342685, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2XfoxOYNOTar9OAt" +} diff --git a/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json b/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json new file mode 100644 index 00000000..03e63149 --- /dev/null +++ b/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json @@ -0,0 +1,31 @@ +{ + "_id": "NZPp8EGEg1JmXdNd", + "name": "Abklingtrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist hellblauen Tränke halbieren (abrunden) die Abklingzeit aller Zauber für die Dauer eines Kampfes.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342916, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NZPp8EGEg1JmXdNd" +} diff --git a/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json b/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json new file mode 100644 index 00000000..8a05cb05 --- /dev/null +++ b/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json @@ -0,0 +1,138 @@ +{ + "_id": "IHKj37AVchphOWGZ", + "name": "Aderschlitz", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-bone-barbed.webp", + "effects": [ + { + "_id": "VdOm09p88rltMp73", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IHKj37AVchphOWGZ.VdOm09p88rltMp73" + }, + { + "_id": "0pBScyXbTQudldbm", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Aderschlitzer", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Aderschlitzer +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IHKj37AVchphOWGZ.0pBScyXbTQudldbm" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein magischer Dolch +2 mit Aderschlitzer +III.

\n

Initiative +1

", + "quantity": 1, + "price": 7252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342868, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IHKj37AVchphOWGZ" +} diff --git a/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json b/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json new file mode 100644 index 00000000..96b37ae5 --- /dev/null +++ b/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json @@ -0,0 +1,31 @@ +{ + "_id": "eRQ9LUNWbnAuuVX6", + "name": "Allheilungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Von milchiger Färbung, wirkt dieser Trank den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} auf den Trinkenden (keine Probe nötig).

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343166, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eRQ9LUNWbnAuuVX6" +} diff --git a/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json b/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json new file mode 100644 index 00000000..879d6c9a --- /dev/null +++ b/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json @@ -0,0 +1,31 @@ +{ + "_id": "Zl8ZkPrwHibRYWPh", + "name": "Allsichttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-vial-corked-labeled-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Für W20 Minuten kann der Trinker Magie, Unsichtbares und Verborgenes (Fallen, Geheimtüren usw.) automatisch erkennen.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343084, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Zl8ZkPrwHibRYWPh" +} diff --git a/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json b/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json new file mode 100644 index 00000000..2f123649 --- /dev/null +++ b/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json @@ -0,0 +1,31 @@ +{ + "_id": "oeyhSfAQQPUbm10p", + "name": "Alterungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-vial-corked-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende wird augenblicklich W20 Jahre älter, Haare und Nägel wachsen entsprechend.

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343402, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oeyhSfAQQPUbm10p" +} diff --git a/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json b/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json new file mode 100644 index 00000000..dafcde9e --- /dev/null +++ b/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json @@ -0,0 +1,31 @@ +{ + "_id": "9NUM3H7oTfrHhFpD", + "name": "Andauernder Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses oft purpurne Getränk heilt 2W20 Runden lang 1 Lebenskraft/Runde.

", + "quantity": 1, + "price": 20, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342771, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9NUM3H7oTfrHhFpD" +} diff --git a/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json b/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json new file mode 100644 index 00000000..f875b1b8 --- /dev/null +++ b/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json @@ -0,0 +1,31 @@ +{ + "_id": "8YpZMXq9RhMCJOst", + "name": "Angelhaken und Schnur", + "type": "loot", + "img": "icons/tools/fishing/hook-barbed-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342762, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8YpZMXq9RhMCJOst" +} diff --git a/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json b/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json new file mode 100644 index 00000000..9753bdb1 --- /dev/null +++ b/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json @@ -0,0 +1,32 @@ +{ + "_id": "dDhfIuRomMfy2kkP", + "name": "Anhänger mit heiligem Symbol", + "type": "equipment", + "img": "icons/equipment/neck/amulet-carved-stone-spiral.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343132, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dDhfIuRomMfy2kkP" +} diff --git a/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json b/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json new file mode 100644 index 00000000..aa08e692 --- /dev/null +++ b/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json @@ -0,0 +1,32 @@ +{ + "_id": "VJftG703v7db0Cqf", + "name": "Armreif des Bogners", + "type": "equipment", + "img": "icons/equipment/wrist/bracer-belted-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verleiht auf Schießen-Proben mit Bögen einen Bonus von +2.

", + "quantity": 1, + "price": 1260, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343048, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VJftG703v7db0Cqf" +} diff --git a/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json b/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json new file mode 100644 index 00000000..8f1e96ff --- /dev/null +++ b/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json @@ -0,0 +1,31 @@ +{ + "_id": "2jgIyVHZYJroSUFY", + "name": "Atemfreitrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-bubbling-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinker dieses sprudelnden Trankes braucht für KÖR in Stunden nicht zu atmen.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342690, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2jgIyVHZYJroSUFY" +} diff --git a/packs/items/Axt__1_jsANSjzxRPKO3AyG.json b/packs/items/Axt__1_jsANSjzxRPKO3AyG.json new file mode 100644 index 00000000..67271663 --- /dev/null +++ b/packs/items/Axt__1_jsANSjzxRPKO3AyG.json @@ -0,0 +1,35 @@ +{ + "_id": "jsANSjzxRPKO3AyG", + "name": "Axt +1", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343311, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jsANSjzxRPKO3AyG" +} diff --git a/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json b/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json new file mode 100644 index 00000000..aa0ad807 --- /dev/null +++ b/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json @@ -0,0 +1,87 @@ +{ + "_id": "PTiDNLKc0l9rD7Kb", + "name": "Axt +2", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-hammer-steel.webp", + "effects": [ + { + "_id": "8wzWUlPPd92HiwJs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PTiDNLKc0l9rD7Kb.8wzWUlPPd92HiwJs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342934, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PTiDNLKc0l9rD7Kb" +} diff --git a/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json b/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json new file mode 100644 index 00000000..b5d7c4b3 --- /dev/null +++ b/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json @@ -0,0 +1,87 @@ +{ + "_id": "KyhMB9Jn8Vaxs4eF", + "name": "Axt +3", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-yellow.webp", + "effects": [ + { + "_id": "yaR4SKssj8gYJB91", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KyhMB9Jn8Vaxs4eF.yaR4SKssj8gYJB91" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342897, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KyhMB9Jn8Vaxs4eF" +} diff --git a/packs/items/Axt_eAd86Ylh42nHoCsx.json b/packs/items/Axt_eAd86Ylh42nHoCsx.json new file mode 100644 index 00000000..42b4bf6c --- /dev/null +++ b/packs/items/Axt_eAd86Ylh42nHoCsx.json @@ -0,0 +1,35 @@ +{ + "_id": "eAd86Ylh42nHoCsx", + "name": "Axt", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-worn-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343149, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eAd86Ylh42nHoCsx" +} diff --git a/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json b/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json new file mode 100644 index 00000000..ae2cf990 --- /dev/null +++ b/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json @@ -0,0 +1,31 @@ +{ + "_id": "ec2Aft0epeFhdg9B", + "name": "Bärenfalle", + "type": "loot", + "img": "icons/environment/traps/trap-jaw-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen 30

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343171, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ec2Aft0epeFhdg9B" +} diff --git a/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json b/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json new file mode 100644 index 00000000..95b48e3f --- /dev/null +++ b/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json @@ -0,0 +1,181 @@ +{ + "_id": "e6LetXJHUY4ndz7B", + "name": "Bärenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel.webp", + "effects": [ + { + "_id": "uOEN4xXL3IcebbJO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.uOEN4xXL3IcebbJO" + }, + { + "_id": "dxmfRAe4ljoKdi0M", + "flags": {}, + "changes": [ + { + "key": "system.traits.strength.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Stärke +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.dxmfRAe4ljoKdi0M" + }, + { + "_id": "DItC97OWlR1nL79a", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Raserei", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Raserei +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e6LetXJHUY4ndz7B.DItC97OWlR1nL79a" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit Bärenfellen und -klauen verzierte Plattenrüstung +2 gewährt ihrem Träger Raserei +I sowie +1 auf Stärke.

", + "quantity": 1, + "price": 8800, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343146, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e6LetXJHUY4ndz7B" +} diff --git a/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json b/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json new file mode 100644 index 00000000..c92f50e4 --- /dev/null +++ b/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json @@ -0,0 +1,31 @@ +{ + "_id": "nH1Vfhhx2jlGoQ6i", + "name": "Berserkertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-flask-fumes-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses von verrückten Orkschamanen entwickelte, dampfende Getränk heilt drei Kampfrunden jeweils W20 Lebenskraft. In der vierten Runde explodiert der Trinker und verursacht in 2 m Radius Schaden in Höhe der erwürfelten Heilung (Abwehr gilt).

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343339, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nH1Vfhhx2jlGoQ6i" +} diff --git a/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json b/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json new file mode 100644 index 00000000..4012d079 --- /dev/null +++ b/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json @@ -0,0 +1,35 @@ +{ + "_id": "KOdzXkLHuNkCciAa", + "name": "Bihänder", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342893, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KOdzXkLHuNkCciAa" +} diff --git a/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json b/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json new file mode 100644 index 00000000..7a351640 --- /dev/null +++ b/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json @@ -0,0 +1,87 @@ +{ + "_id": "2ydkhz5gDjxAiaYy", + "name": "Bihänder +1", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-crossguard-engraved-green.webp", + "effects": [ + { + "_id": "qdSiJ4l0AuTd68CB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2ydkhz5gDjxAiaYy.qdSiJ4l0AuTd68CB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342694, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2ydkhz5gDjxAiaYy" +} diff --git a/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json b/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json new file mode 100644 index 00000000..bc96336a --- /dev/null +++ b/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json @@ -0,0 +1,87 @@ +{ + "_id": "QmyAtIDJfnBZvZFg", + "name": "Bihänder +2", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard-jewel-green.webp", + "effects": [ + { + "_id": "0GrRl4XU2UrvbDxs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QmyAtIDJfnBZvZFg.0GrRl4XU2UrvbDxs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342948, + "modifiedTime": 1740227862992, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QmyAtIDJfnBZvZFg" +} diff --git a/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json b/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json new file mode 100644 index 00000000..2238b32b --- /dev/null +++ b/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json @@ -0,0 +1,130 @@ +{ + "_id": "dIA53f3kvU9JgGvg", + "name": "Bihänder +3", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-guard-gem-blue.webp", + "effects": [ + { + "_id": "DaKTtdhRO45QZuDJ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dIA53f3kvU9JgGvg.DaKTtdhRO45QZuDJ" + }, + { + "_id": "n4mZBHWKSQLQcHHD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dIA53f3kvU9JgGvg.n4mZBHWKSQLQcHHD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343135, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dIA53f3kvU9JgGvg" +} diff --git a/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json b/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json new file mode 100644 index 00000000..e1957d79 --- /dev/null +++ b/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json @@ -0,0 +1,31 @@ +{ + "_id": "d3ixiQ3FrQndjz46", + "name": "Blendlaterne", + "type": "loot", + "img": "icons/sundries/lights/lantern-bullseye-signal-copper.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343123, + "modifiedTime": 1740227863009, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d3ixiQ3FrQndjz46" +} diff --git a/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json b/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json new file mode 100644 index 00000000..84ca65da --- /dev/null +++ b/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json @@ -0,0 +1,181 @@ +{ + "_id": "CQZtlL8zUdOVUVrU", + "name": "Blutrüstung", + "type": "armor", + "img": "icons/equipment/chest/breastplate-rivited-red.webp", + "effects": [ + { + "_id": "pAxAXam5JBN6Acz9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.pAxAXam5JBN6Acz9" + }, + { + "_id": "CXouU4P0kZYU6oXR", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.CXouU4P0kZYU6oXR" + }, + { + "_id": "32vJ305ynrZ0xYki", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CQZtlL8zUdOVUVrU.32vJ305ynrZ0xYki" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diese rotgefärbte Plattenrüstung +1 ist das Talent Verletzen +I eingebettet.

\n

Laufen -0,5

", + "quantity": 1, + "price": 5300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342802, + "modifiedTime": 1740227862976, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CQZtlL8zUdOVUVrU" +} diff --git a/packs/items/Brechstange_upLe2iticb6YKsIR.json b/packs/items/Brechstange_upLe2iticb6YKsIR.json new file mode 100644 index 00000000..abbc747c --- /dev/null +++ b/packs/items/Brechstange_upLe2iticb6YKsIR.json @@ -0,0 +1,35 @@ +{ + "_id": "upLe2iticb6YKsIR", + "name": "Brechstange", + "type": "weapon", + "img": "icons/tools/hand/wrench-iron-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1.5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343545, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!upLe2iticb6YKsIR" +} diff --git a/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json b/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json new file mode 100644 index 00000000..d0ce61d3 --- /dev/null +++ b/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json @@ -0,0 +1,35 @@ +{ + "_id": "5KxdKllRXuau0Uhm", + "name": "Breitschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-broad-worn.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342715, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5KxdKllRXuau0Uhm" +} diff --git a/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json b/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json new file mode 100644 index 00000000..672d7495 --- /dev/null +++ b/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json @@ -0,0 +1,87 @@ +{ + "_id": "Nz6gFGSHzHVO3QxA", + "name": "Breitschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/sword-broad-red.webp", + "effects": [ + { + "_id": "M7zvcLqDr9HuzqTV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Nz6gFGSHzHVO3QxA.M7zvcLqDr9HuzqTV" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342919, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nz6gFGSHzHVO3QxA" +} diff --git a/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json b/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json new file mode 100644 index 00000000..4422ab2f --- /dev/null +++ b/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json @@ -0,0 +1,87 @@ +{ + "_id": "TQhwV1dNYfy50y6k", + "name": "Breitschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-broad-blue.webp", + "effects": [ + { + "_id": "g8ZgARGCbMxsnFJe", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TQhwV1dNYfy50y6k.g8ZgARGCbMxsnFJe" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342996, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TQhwV1dNYfy50y6k" +} diff --git a/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json b/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json new file mode 100644 index 00000000..f06446ee --- /dev/null +++ b/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json @@ -0,0 +1,87 @@ +{ + "_id": "e65AAjglKeU1txL6", + "name": "Breitschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-broad-engraved.webp", + "effects": [ + { + "_id": "BVnmaiguzsq6nSwF", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!e65AAjglKeU1txL6.BVnmaiguzsq6nSwF" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343144, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e65AAjglKeU1txL6" +} diff --git a/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json b/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json new file mode 100644 index 00000000..2ecc9b55 --- /dev/null +++ b/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json @@ -0,0 +1,31 @@ +{ + "_id": "QrGtd0N6cChddyG2", + "name": "Brennholz (Bündel)", + "type": "loot", + "img": "icons/commodities/wood/kindling-sticks-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342952, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QrGtd0N6cChddyG2" +} diff --git a/packs/items/Decke_eLTOIKuFGf3M9HYt.json b/packs/items/Decke_eLTOIKuFGf3M9HYt.json new file mode 100644 index 00000000..d9a5213f --- /dev/null +++ b/packs/items/Decke_eLTOIKuFGf3M9HYt.json @@ -0,0 +1,31 @@ +{ + "_id": "eLTOIKuFGf3M9HYt", + "name": "Decke", + "type": "loot", + "img": "icons/sundries/survival/bedroll-worn-beige.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343154, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eLTOIKuFGf3M9HYt" +} diff --git a/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json b/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json new file mode 100644 index 00000000..7deafb71 --- /dev/null +++ b/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json @@ -0,0 +1,31 @@ +{ + "_id": "FoK7Tc7IePUpnDkL", + "name": "Dicke Reisedecke", + "type": "loot", + "img": "icons/sundries/survival/bedroll-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342845, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FoK7Tc7IePUpnDkL" +} diff --git a/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json b/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json new file mode 100644 index 00000000..c1230ae2 --- /dev/null +++ b/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json @@ -0,0 +1,31 @@ +{ + "_id": "TjB6AWIwGY5Q8xln", + "name": "Dietrich", + "type": "loot", + "img": "icons/tools/hand/lockpicks-steel-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343010, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TjB6AWIwGY5Q8xln" +} diff --git a/packs/items/Dolch_Fl2OHl2zMi281SbE.json b/packs/items/Dolch_Fl2OHl2zMi281SbE.json new file mode 100644 index 00000000..e128ea81 --- /dev/null +++ b/packs/items/Dolch_Fl2OHl2zMi281SbE.json @@ -0,0 +1,35 @@ +{ + "_id": "Fl2OHl2zMi281SbE", + "name": "Dolch", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342837, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Fl2OHl2zMi281SbE" +} diff --git a/packs/items/Dolch__1_trop6WmDZEhv3gRA.json b/packs/items/Dolch__1_trop6WmDZEhv3gRA.json new file mode 100644 index 00000000..ea461289 --- /dev/null +++ b/packs/items/Dolch__1_trop6WmDZEhv3gRA.json @@ -0,0 +1,130 @@ +{ + "_id": "trop6WmDZEhv3gRA", + "name": "Dolch +1", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-curved-blue.webp", + "effects": [ + { + "_id": "9jtH6ER0s0I8SPyi", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!trop6WmDZEhv3gRA.9jtH6ER0s0I8SPyi" + }, + { + "_id": "aDUESIHIetT9xLbD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!trop6WmDZEhv3gRA.aDUESIHIetT9xLbD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343515, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!trop6WmDZEhv3gRA" +} diff --git a/packs/items/Dolch__2_ajO71RuOPNlINZID.json b/packs/items/Dolch__2_ajO71RuOPNlINZID.json new file mode 100644 index 00000000..f485c5e5 --- /dev/null +++ b/packs/items/Dolch__2_ajO71RuOPNlINZID.json @@ -0,0 +1,87 @@ +{ + "_id": "ajO71RuOPNlINZID", + "name": "Dolch +2", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-straight-green.webp", + "effects": [ + { + "_id": "oxrYsZM08ENZAhge", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ajO71RuOPNlINZID.oxrYsZM08ENZAhge" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343093, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ajO71RuOPNlINZID" +} diff --git a/packs/items/Dolch__3_0wgXMtaVpVJabEun.json b/packs/items/Dolch__3_0wgXMtaVpVJabEun.json new file mode 100644 index 00000000..a09af6c7 --- /dev/null +++ b/packs/items/Dolch__3_0wgXMtaVpVJabEun.json @@ -0,0 +1,35 @@ +{ + "_id": "0wgXMtaVpVJabEun", + "name": "Dolch +3", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-double-engraved-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative +1

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342643, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0wgXMtaVpVJabEun" +} diff --git a/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json b/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json new file mode 100644 index 00000000..090d8fd4 --- /dev/null +++ b/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json @@ -0,0 +1,87 @@ +{ + "_id": "0cAWFZtQfLF7q1ZX", + "name": "Elfenbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", + "effects": [ + { + "_id": "UPsfGYjye47se1Gw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0cAWFZtQfLF7q1ZX.UPsfGYjye47se1Gw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2325, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342635, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0cAWFZtQfLF7q1ZX" +} diff --git a/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json b/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json new file mode 100644 index 00000000..ab49752d --- /dev/null +++ b/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json @@ -0,0 +1,87 @@ +{ + "_id": "oqnI982dhCya94Tu", + "name": "Elfenbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-leather-red.webp", + "effects": [ + { + "_id": "l9ZRRSrd6yBhQUJL", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!oqnI982dhCya94Tu.l9ZRRSrd6yBhQUJL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2825, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343440, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oqnI982dhCya94Tu" +} diff --git a/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json b/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json new file mode 100644 index 00000000..bd687d6a --- /dev/null +++ b/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json @@ -0,0 +1,87 @@ +{ + "_id": "0vIgZkHBeEPut73w", + "name": "Elfenbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve.webp", + "effects": [ + { + "_id": "azjxgNJkYNvxg622", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0vIgZkHBeEPut73w.azjxgNJkYNvxg622" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3325, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342641, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0vIgZkHBeEPut73w" +} diff --git a/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json b/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json new file mode 100644 index 00000000..e0b680d5 --- /dev/null +++ b/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json @@ -0,0 +1,79 @@ +{ + "_id": "uDdLTyyNqeXzCssp", + "name": "Elfenbogen", + "type": "weapon", + "img": "icons/weapons/bows/longbow-recurve-brown.webp", + "effects": [ + { + "_id": "QScLkDv6gysh119m", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uDdLTyyNqeXzCssp.QScLkDv6gysh119m" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 75, + "availability": "elves", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343523, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uDdLTyyNqeXzCssp" +} diff --git a/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json b/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json new file mode 100644 index 00000000..a18d2492 --- /dev/null +++ b/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json @@ -0,0 +1,76 @@ +{ + "_id": "OaG6IhVfS6EmHRux", + "name": "Elfenstiefel", + "type": "equipment", + "img": "icons/equipment/feet/boots-leather-green.webp", + "effects": [ + { + "_id": "mdjigDqsRTZyFNmC", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!OaG6IhVfS6EmHRux.mdjigDqsRTZyFNmC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese bequemen Stiefel erhöhen den Laufen-Wert um 1.

", + "quantity": 1, + "price": 1251.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342925, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OaG6IhVfS6EmHRux" +} diff --git a/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json b/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json new file mode 100644 index 00000000..b261843b --- /dev/null +++ b/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json @@ -0,0 +1,84 @@ +{ + "_id": "V3D7u9LDumvBwJQI", + "name": "Elfischer Sattel", + "type": "equipment", + "img": "icons/commodities/leather/leather-studded-tan.webp", + "effects": [ + { + "_id": "yNjGOSspfOUKlg8y", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Reiten", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!V3D7u9LDumvBwJQI.yNjGOSspfOUKlg8y" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diesen äußerst fein gearbeiteten Sattel ist Reiten +I eingebettet.

", + "quantity": 1, + "price": 505, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343043, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V3D7u9LDumvBwJQI" +} diff --git a/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json b/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json new file mode 100644 index 00000000..c877de5a --- /dev/null +++ b/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json @@ -0,0 +1,135 @@ +{ + "_id": "PE3eWmsGcd5dVVh4", + "name": "Elfischer Tarnumhang", + "type": "equipment", + "img": "icons/equipment/back/cloak-collared-leaves-green.webp", + "effects": [ + { + "_id": "Nr6hXbJeVlmJYASc", + "changes": [ + { + "key": "system.checks.hide", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verbergen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PE3eWmsGcd5dVVh4.Nr6hXbJeVlmJYASc" + }, + { + "_id": "9qj7TWM9shrTKppj", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Heimlichkeit", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heimlichkeit +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PE3eWmsGcd5dVVh4.9qj7TWM9shrTKppj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Umhang, in den Feengarn eingewebt wurde, verleiht zusätzlich zu seiner eingebetteten Heimlichkeit +III auf Verbergen-Proben +3.

", + "quantity": 1, + "price": 875.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342929, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PE3eWmsGcd5dVVh4" +} diff --git a/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json b/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json new file mode 100644 index 00000000..3f820b99 --- /dev/null +++ b/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json @@ -0,0 +1,135 @@ +{ + "_id": "dvVhgqCv9VDpFW0l", + "name": "Fäustlinge der Verstümmelung", + "type": "equipment", + "img": "icons/equipment/hand/glove-tooled-leather-brown.webp", + "effects": [ + { + "_id": "CRvnbvzibegpIQAz", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Brutaler Hieb", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Brutaler Hieb +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dvVhgqCv9VDpFW0l.CRvnbvzibegpIQAz" + }, + { + "_id": "ohRMO3BzPaxhKYh4", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dvVhgqCv9VDpFW0l.ohRMO3BzPaxhKYh4" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese blutverschmutzten Wildlederhandschuhe gewähren ihrem Träger Brutaler Hieb +I und Verletzen +I.

", + "quantity": 1, + "price": 3050.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343143, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dvVhgqCv9VDpFW0l" +} diff --git a/packs/items/Fackel_Q61SvqiQUoVfU99X.json b/packs/items/Fackel_Q61SvqiQUoVfU99X.json new file mode 100644 index 00000000..4503b9f8 --- /dev/null +++ b/packs/items/Fackel_Q61SvqiQUoVfU99X.json @@ -0,0 +1,35 @@ +{ + "_id": "Q61SvqiQUoVfU99X", + "name": "Fackel", + "type": "weapon", + "img": "icons/sundries/lights/torch-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Brennt 2h

", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342941, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Q61SvqiQUoVfU99X" +} diff --git a/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json b/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json new file mode 100644 index 00000000..e03302dc --- /dev/null +++ b/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json @@ -0,0 +1,31 @@ +{ + "_id": "L2ZE2l98snBZw5DZ", + "name": "Federkiel", + "type": "loot", + "img": "icons/tools/scribal/ink-quill-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342898, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L2ZE2l98snBZw5DZ" +} diff --git a/packs/items/Feindfeger_QhJllncFlQu7BGDw.json b/packs/items/Feindfeger_QhJllncFlQu7BGDw.json new file mode 100644 index 00000000..86dc487a --- /dev/null +++ b/packs/items/Feindfeger_QhJllncFlQu7BGDw.json @@ -0,0 +1,87 @@ +{ + "_id": "QhJllncFlQu7BGDw", + "name": "Feindfeger", + "type": "weapon", + "img": "icons/weapons/swords/greatsword-crossguard-steel.webp", + "effects": [ + { + "_id": "Oz0U5fEJSQ7HPQDG", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Rundumschlag", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Rundumschlag +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QhJllncFlQu7BGDw.Oz0U5fEJSQ7HPQDG" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Unscheinbar aussehender Bihänder +2 mit Rundumschlag +II.

\n

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 9760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342946, + "modifiedTime": 1740227862992, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QhJllncFlQu7BGDw" +} diff --git a/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json b/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json new file mode 100644 index 00000000..6dbe77a2 --- /dev/null +++ b/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json @@ -0,0 +1,138 @@ +{ + "_id": "rvDTHq5UoRK6acm6", + "name": "Fellmantel des Heilers", + "type": "armor", + "img": "icons/equipment/chest/vest-leather-tattered-white.webp", + "effects": [ + { + "_id": "5vJF9ck6rDsBPnKl", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rvDTHq5UoRK6acm6.5vJF9ck6rDsBPnKl" + }, + { + "_id": "Uzo51C3LrgP3G8jb", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heilzauber +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rvDTHq5UoRK6acm6.Uzo51C3LrgP3G8jb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese aus weißem Fell geschneiderte Lederrüstung gewährt +2 auf alle Heilzauber.

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343475, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rvDTHq5UoRK6acm6" +} diff --git a/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json b/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json new file mode 100644 index 00000000..d40166a4 --- /dev/null +++ b/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json @@ -0,0 +1,32 @@ +{ + "_id": "abxhFbHx3dzRUPt8", + "name": "Feuerballzepter", + "type": "equipment", + "img": "icons/weapons/wands/wand-carved-fire.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Zepter, in das der Zauber @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball} eingebettet wurde, dessen Aklingzeit man 2x/Tag ignorieren kann.

", + "quantity": 1, + "price": 7630, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343091, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!abxhFbHx3dzRUPt8" +} diff --git a/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json b/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json new file mode 100644 index 00000000..fff4cda4 --- /dev/null +++ b/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json @@ -0,0 +1,31 @@ +{ + "_id": "JjM6nTZzV28ioIFq", + "name": "Feuerstein & Zunder", + "type": "loot", + "img": "icons/commodities/stone/geode-raw-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342882, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JjM6nTZzV28ioIFq" +} diff --git a/packs/items/Flegel_SLmQz2B4JvywROCv.json b/packs/items/Flegel_SLmQz2B4JvywROCv.json new file mode 100644 index 00000000..3b9a160a --- /dev/null +++ b/packs/items/Flegel_SLmQz2B4JvywROCv.json @@ -0,0 +1,87 @@ +{ + "_id": "SLmQz2B4JvywROCv", + "name": "Flegel", + "type": "weapon", + "img": "icons/weapons/maces/flail-ball-grey.webp", + "effects": [ + { + "_id": "yXvt3CT4FbXYjIfc", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!SLmQz2B4JvywROCv.yXvt3CT4FbXYjIfc" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342987, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SLmQz2B4JvywROCv" +} diff --git a/packs/items/Flegel__1_2le5COwoh45Pc4oD.json b/packs/items/Flegel__1_2le5COwoh45Pc4oD.json new file mode 100644 index 00000000..9969870f --- /dev/null +++ b/packs/items/Flegel__1_2le5COwoh45Pc4oD.json @@ -0,0 +1,87 @@ +{ + "_id": "2le5COwoh45Pc4oD", + "name": "Flegel +1", + "type": "weapon", + "img": "icons/weapons/maces/flail-cube-grey.webp", + "effects": [ + { + "_id": "rUye8ORwMGGtWPrr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2le5COwoh45Pc4oD.rUye8ORwMGGtWPrr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342692, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2le5COwoh45Pc4oD" +} diff --git a/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json b/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json new file mode 100644 index 00000000..12be4fc2 --- /dev/null +++ b/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json @@ -0,0 +1,87 @@ +{ + "_id": "JZDsSUkQGVf0aOjH", + "name": "Flegel +2", + "type": "weapon", + "img": "icons/weapons/maces/flail-spiked-grey.webp", + "effects": [ + { + "_id": "PD6vgViNBP4QaxMK", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!JZDsSUkQGVf0aOjH.PD6vgViNBP4QaxMK" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342878, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JZDsSUkQGVf0aOjH" +} diff --git a/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json b/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json new file mode 100644 index 00000000..3d3dc759 --- /dev/null +++ b/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json @@ -0,0 +1,87 @@ +{ + "_id": "BrsnuGuOEfolt9VV", + "name": "Flegel +3", + "type": "weapon", + "img": "icons/weapons/maces/flail-studded-grey.webp", + "effects": [ + { + "_id": "98YoU1PGqcSm47Zw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!BrsnuGuOEfolt9VV.98YoU1PGqcSm47Zw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -2

", + "quantity": 1, + "price": 2758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342794, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BrsnuGuOEfolt9VV" +} diff --git a/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json b/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json new file mode 100644 index 00000000..95372001 --- /dev/null +++ b/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json @@ -0,0 +1,31 @@ +{ + "_id": "AlmkanwZXY9UxMUD", + "name": "Fliegender Teppich", + "type": "loot", + "img": "icons/commodities/cloth/cloth-patterned-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein legendärer Gegenstand aus den heißen Wüstenlanden, in den die Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} und @Compendium[ds4.spells.KUbT1gBeThcLY7vU]{Spurt} eingebettet sind. Die Zauber wirken permanent auf denjenigen, der in der Mitte des Teppichs sitzt. Proben auf Zaubern sind nicht erforderlich.

", + "quantity": 1, + "price": 4340, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342789, + "modifiedTime": 1740227862973, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AlmkanwZXY9UxMUD" +} diff --git a/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json b/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json new file mode 100644 index 00000000..f217e125 --- /dev/null +++ b/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json @@ -0,0 +1,31 @@ +{ + "_id": "V6ywiDBc1Son1XrQ", + "name": "Fliegentrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft gelbe Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343047, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V6ywiDBc1Son1XrQ" +} diff --git a/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json b/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json new file mode 100644 index 00000000..c6c56343 --- /dev/null +++ b/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json @@ -0,0 +1,76 @@ +{ + "_id": "0Vd79Orsle4PUqs2", + "name": "Gürtel der Trollstärke", + "type": "equipment", + "img": "icons/equipment/waist/belt-armored-studded-steel.webp", + "effects": [ + { + "_id": "43bRMhcEqMvQvRQU", + "flags": {}, + "changes": [ + { + "key": "system.traits.strength.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Stärke +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0Vd79Orsle4PUqs2.43bRMhcEqMvQvRQU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser mit kleinen Eisenplatten beschlagene Gürtel erhöht die Stärke seines Trägers um 3.

", + "quantity": 1, + "price": 3250.05, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342634, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0Vd79Orsle4PUqs2" +} diff --git a/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json b/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json new file mode 100644 index 00000000..d7b0e4af --- /dev/null +++ b/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json @@ -0,0 +1,31 @@ +{ + "_id": "v7WiMqH1XylGqNOy", + "name": "Geisterbote", + "type": "loot", + "img": "icons/commodities/materials/glass-orb-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder dieser mit Rauch gefüllten Behälter enthält eine Ladung des Zaubers @Compendium[ds4.spells.wnYRgIjVtIhL26eg]{Botschaft}.

", + "quantity": 1, + "price": 454, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343550, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v7WiMqH1XylGqNOy" +} diff --git a/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json b/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json new file mode 100644 index 00000000..6f85bd74 --- /dev/null +++ b/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json @@ -0,0 +1,79 @@ +{ + "_id": "6UBvjMJd6n5P5YWv", + "name": "Gewänder des Adlers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-banded-simple-leather-brown.webp", + "effects": [ + { + "_id": "cl2PqWeAtDsBjz8k", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mind.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Geist +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6UBvjMJd6n5P5YWv.cl2PqWeAtDsBjz8k" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese hellbeige, mit Adlerfedern verzierte Lederrüstung +1 gewährt +1 auf Geist.

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342730, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6UBvjMJd6n5P5YWv" +} diff --git a/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json b/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json new file mode 100644 index 00000000..0df89807 --- /dev/null +++ b/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json @@ -0,0 +1,31 @@ +{ + "_id": "oPUlB9rz5rvRKrq8", + "name": "Giftbanntrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-glowing-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wirkt den Zauber @Compendium[ds4.spells.ONhSaLNmvvacgCjA]{Giftbann} auf den Trinkenden (keine Probe nötig).

", + "quantity": 1, + "price": 150, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343385, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oPUlB9rz5rvRKrq8" +} diff --git a/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json b/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json new file mode 100644 index 00000000..b77adb68 --- /dev/null +++ b/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json @@ -0,0 +1,31 @@ +{ + "_id": "hrAyguSjO6JhTE5m", + "name": "Glückstrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende kann für W20 Stunden alle Patzer ignorieren.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343239, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hrAyguSjO6JhTE5m" +} diff --git a/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json b/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json new file mode 100644 index 00000000..9063d31c --- /dev/null +++ b/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json @@ -0,0 +1,138 @@ +{ + "_id": "lHlwYWlgC2iKjDFM", + "name": "Grausame Axt", + "type": "weapon", + "img": "icons/weapons/axes/shortaxe-simple-black.webp", + "effects": [ + { + "_id": "wh12XwprBMtY3BTB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lHlwYWlgC2iKjDFM.wh12XwprBMtY3BTB" + }, + { + "_id": "5EWlvp1ZJkHmodfC", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Verletzen", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Verletzen +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lHlwYWlgC2iKjDFM.5EWlvp1ZJkHmodfC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Antike Axt +1 mit Verletzen +III

", + "quantity": 1, + "price": 4256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343320, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lHlwYWlgC2iKjDFM" +} diff --git a/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json b/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json new file mode 100644 index 00000000..27c4393d --- /dev/null +++ b/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json @@ -0,0 +1,31 @@ +{ + "_id": "tW53rAmCXx6rqKMP", + "name": "Großer Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-stopped-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist weinroten Tränke heilen 2W20 Lebenskraft.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343514, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tW53rAmCXx6rqKMP" +} diff --git a/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json b/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json new file mode 100644 index 00000000..cc20bdb6 --- /dev/null +++ b/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json @@ -0,0 +1,31 @@ +{ + "_id": "Ryv745YriIZNKXG5", + "name": "Großer Schutztrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-tied-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht für W20 Runden die Abwehr um +3.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342972, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Ryv745YriIZNKXG5" +} diff --git a/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json b/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json new file mode 100644 index 00000000..dc8c5a67 --- /dev/null +++ b/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json @@ -0,0 +1,87 @@ +{ + "_id": "FfVzLWtmCVRwFI4n", + "name": "Hammer +1", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-double-steel.webp", + "effects": [ + { + "_id": "rqEqNTsSgoto2la8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FfVzLWtmCVRwFI4n.rqEqNTsSgoto2la8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1.257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342829, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FfVzLWtmCVRwFI4n" +} diff --git a/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json b/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json new file mode 100644 index 00000000..98ad70d2 --- /dev/null +++ b/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json @@ -0,0 +1,87 @@ +{ + "_id": "6QehiJpVqqA9bW3P", + "name": "Hammer +2", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-double-steel-embossed.webp", + "effects": [ + { + "_id": "xQlGUPOpB6Me9OgF", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6QehiJpVqqA9bW3P.xQlGUPOpB6Me9OgF" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342728, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6QehiJpVqqA9bW3P" +} diff --git a/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json b/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json new file mode 100644 index 00000000..1a18bf5c --- /dev/null +++ b/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json @@ -0,0 +1,87 @@ +{ + "_id": "tAdNTxSRq9hARm1p", + "name": "Hammer +3", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-embossed-white.webp", + "effects": [ + { + "_id": "aLeVPvqVvSHnDTsp", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tAdNTxSRq9hARm1p.aLeVPvqVvSHnDTsp" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343509, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tAdNTxSRq9hARm1p" +} diff --git a/packs/items/Hammer_sMJw9EQtd2pYsgYE.json b/packs/items/Hammer_sMJw9EQtd2pYsgYE.json new file mode 100644 index 00000000..ac5baef5 --- /dev/null +++ b/packs/items/Hammer_sMJw9EQtd2pYsgYE.json @@ -0,0 +1,35 @@ +{ + "_id": "sMJw9EQtd2pYsgYE", + "name": "Hammer", + "type": "weapon", + "img": "icons/weapons/hammers/shorthammer-simple-iron-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343482, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sMJw9EQtd2pYsgYE" +} diff --git a/packs/items/Handschellen_zjefX9KYvMphtVwX.json b/packs/items/Handschellen_zjefX9KYvMphtVwX.json new file mode 100644 index 00000000..4570d32d --- /dev/null +++ b/packs/items/Handschellen_zjefX9KYvMphtVwX.json @@ -0,0 +1,31 @@ +{ + "_id": "zjefX9KYvMphtVwX", + "name": "Handschellen", + "type": "loot", + "img": "icons/sundries/survival/cuffs-shackles-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Preis für beide Schlösser extra ermitteln

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343613, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zjefX9KYvMphtVwX" +} diff --git a/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json b/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json new file mode 100644 index 00000000..8a6cc061 --- /dev/null +++ b/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json @@ -0,0 +1,31 @@ +{ + "_id": "zquQpOOVr5lIbnmL", + "name": "Heilkraut", + "type": "loot", + "img": "icons/tools/laboratory/bowl-herbs-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Probenwert 10: 1-10 heilt LK in Ergebnishöhe, 11+ kein Heileffekt

", + "quantity": 1, + "price": 2.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343619, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zquQpOOVr5lIbnmL" +} diff --git a/packs/items/Heiltrank_19bmt5UJrT3T36wE.json b/packs/items/Heiltrank_19bmt5UJrT3T36wE.json new file mode 100644 index 00000000..0398a563 --- /dev/null +++ b/packs/items/Heiltrank_19bmt5UJrT3T36wE.json @@ -0,0 +1,31 @@ +{ + "_id": "19bmt5UJrT3T36wE", + "name": "Heiltrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses oftmals rote Getränk heilt W20 Lebenskraft.

", + "quantity": 1, + "price": 10, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342647, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!19bmt5UJrT3T36wE" +} diff --git a/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json b/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json new file mode 100644 index 00000000..a637ea7b --- /dev/null +++ b/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json @@ -0,0 +1,35 @@ +{ + "_id": "2JQowFF6ZjF90OFI", + "name": "Hellebarde", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-engraved-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2, Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 1754, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342678, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2JQowFF6ZjF90OFI" +} diff --git a/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json b/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json new file mode 100644 index 00000000..fb4d84c3 --- /dev/null +++ b/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json @@ -0,0 +1,138 @@ +{ + "_id": "zoPPqqDyRTvmV2do", + "name": "Hellebarde +1", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-engraved-steel.webp", + "effects": [ + { + "_id": "APXje5Ppu0d75HNw", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zoPPqqDyRTvmV2do.APXje5Ppu0d75HNw" + }, + { + "_id": "FuPTO8plsKR3lq8Z", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zoPPqqDyRTvmV2do.FuPTO8plsKR3lq8Z" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 4, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343617, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zoPPqqDyRTvmV2do" +} diff --git a/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json b/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json new file mode 100644 index 00000000..a2365763 --- /dev/null +++ b/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json @@ -0,0 +1,87 @@ +{ + "_id": "qwXiwcxaDDCzmLLM", + "name": "Hellebarde +2", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-steel.webp", + "effects": [ + { + "_id": "cEFYfp6VrhRcwEKz", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qwXiwcxaDDCzmLLM.cEFYfp6VrhRcwEKz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343472, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qwXiwcxaDDCzmLLM" +} diff --git a/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json b/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json new file mode 100644 index 00000000..1994671a --- /dev/null +++ b/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json @@ -0,0 +1,87 @@ +{ + "_id": "wy8GXE1zjaRpXL8H", + "name": "Hellebarde +3", + "type": "weapon", + "img": "icons/weapons/polearms/halberd-crescent-glowing.webp", + "effects": [ + { + "_id": "JIWNiHZdqmMiPMBz", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!wy8GXE1zjaRpXL8H.JIWNiHZdqmMiPMBz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2754, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343558, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wy8GXE1zjaRpXL8H" +} diff --git a/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json b/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json new file mode 100644 index 00000000..36d5cb6b --- /dev/null +++ b/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json @@ -0,0 +1,31 @@ +{ + "_id": "pzjZv0HhCA15wy1i", + "name": "Holzbecher", + "type": "loot", + "img": "icons/containers/kitchenware/mug-simple-wooden-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343470, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pzjZv0HhCA15wy1i" +} diff --git a/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json b/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json new file mode 100644 index 00000000..c6756285 --- /dev/null +++ b/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json @@ -0,0 +1,31 @@ +{ + "_id": "hGiaAJyEUHbPl5pf", + "name": "Holzbesteck", + "type": "loot", + "img": "icons/tools/cooking/fork-steel-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343232, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hGiaAJyEUHbPl5pf" +} diff --git a/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json b/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json new file mode 100644 index 00000000..2a8ef265 --- /dev/null +++ b/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json @@ -0,0 +1,33 @@ +{ + "_id": "J7d2zx4kqKEdMR1j", + "name": "Holzschild", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei einem Abwehr-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342872, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!J7d2zx4kqKEdMR1j" +} diff --git a/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json b/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json new file mode 100644 index 00000000..56ef6406 --- /dev/null +++ b/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json @@ -0,0 +1,85 @@ +{ + "_id": "89ZunLlXp1Lm6Wzd", + "name": "Holzschild +1", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-steel-red.webp", + "effects": [ + { + "_id": "1M6yYhufFsvYsske", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!89ZunLlXp1Lm6Wzd.1M6yYhufFsvYsske" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342758, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!89ZunLlXp1Lm6Wzd" +} diff --git a/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json b/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json new file mode 100644 index 00000000..9da689d5 --- /dev/null +++ b/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json @@ -0,0 +1,85 @@ +{ + "_id": "0SrSqLjQ5CMNbwXV", + "name": "Holzschild +2", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-reinforced-boss-steel.webp", + "effects": [ + { + "_id": "eu80ImNhR1gsT7jg", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0SrSqLjQ5CMNbwXV.eu80ImNhR1gsT7jg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342631, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0SrSqLjQ5CMNbwXV" +} diff --git a/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json b/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json new file mode 100644 index 00000000..0c9f9f95 --- /dev/null +++ b/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json @@ -0,0 +1,85 @@ +{ + "_id": "KefO4lxHxwddpFFu", + "name": "Holzschild +3", + "type": "shield", + "img": "icons/equipment/shield/round-wooden-boss-gold-brown.webp", + "effects": [ + { + "_id": "AkDi2TNzgpT2ZfrH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KefO4lxHxwddpFFu.AkDi2TNzgpT2ZfrH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342895, + "modifiedTime": 1740227862985, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KefO4lxHxwddpFFu" +} diff --git a/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json b/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json new file mode 100644 index 00000000..6981dbf7 --- /dev/null +++ b/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json @@ -0,0 +1,31 @@ +{ + "_id": "iWOrlMcGVAXTvFEg", + "name": "Holzwürfel (sechsseitig)", + "type": "loot", + "img": "icons/sundries/gaming/dice-runed-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.02, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343290, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iWOrlMcGVAXTvFEg" +} diff --git a/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json b/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json new file mode 100644 index 00000000..7be52c54 --- /dev/null +++ b/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json @@ -0,0 +1,138 @@ +{ + "_id": "5cqP2SvMe5j0BD3t", + "name": "Immertreff", + "type": "weapon", + "img": "icons/weapons/bows/longbow-gold-pink.webp", + "effects": [ + { + "_id": "QN5NueLJpTY2Vwat", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Fieser Schuss", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Fieser Schuss +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5cqP2SvMe5j0BD3t.QN5NueLJpTY2Vwat" + }, + { + "_id": "rDzmy3Xb0qQfErWi", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Scharfschütze", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Scharfschütze +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5cqP2SvMe5j0BD3t.rDzmy3Xb0qQfErWi" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein tödlicher Langbogen +2 mit Fieser Schuss +II und Scharfschütze +II.

\n

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10660, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342725, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5cqP2SvMe5j0BD3t" +} diff --git a/packs/items/K_nigsblut_cqVt9s7u46u0925o.json b/packs/items/K_nigsblut_cqVt9s7u46u0925o.json new file mode 100644 index 00000000..642150eb --- /dev/null +++ b/packs/items/K_nigsblut_cqVt9s7u46u0925o.json @@ -0,0 +1,87 @@ +{ + "_id": "cqVt9s7u46u0925o", + "name": "Königsblut", + "type": "weapon", + "img": "icons/weapons/daggers/dagger-bone-engraved-black.webp", + "effects": [ + { + "_id": "JLc9UYdHy4aAeqA2", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cqVt9s7u46u0925o.JLc9UYdHy4aAeqA2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Durch diesen magischen Dolch +3 mit @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge}, @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Abklingzeit 1x täglich ignorierbar) sollen angeblich schon Könige gestorben sein

\n

Initiative +1

", + "quantity": 1, + "price": 17352, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343116, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cqVt9s7u46u0925o" +} diff --git a/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json b/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json new file mode 100644 index 00000000..f961470d --- /dev/null +++ b/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json @@ -0,0 +1,35 @@ +{ + "_id": "dq4wK5bmMvOfwoWH", + "name": "Kampfstab +1", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple-gold.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 1250.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343142, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dq4wK5bmMvOfwoWH" +} diff --git a/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json b/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json new file mode 100644 index 00000000..0190ed8f --- /dev/null +++ b/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json @@ -0,0 +1,87 @@ +{ + "_id": "HcN322i9KLPzp1d4", + "name": "Kampfstab +2", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple-carved.webp", + "effects": [ + { + "_id": "7AIeGsBF1gYX7cSX", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!HcN322i9KLPzp1d4.7AIeGsBF1gYX7cSX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 1750.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342865, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HcN322i9KLPzp1d4" +} diff --git a/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json b/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json new file mode 100644 index 00000000..e88f4e14 --- /dev/null +++ b/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json @@ -0,0 +1,87 @@ +{ + "_id": "JG18wEtysl2m6sWq", + "name": "Kampfstab +3", + "type": "weapon", + "img": "icons/weapons/staves/staff-ornate.webp", + "effects": [ + { + "_id": "jMu0Mqf6qy2Df8vI", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!JG18wEtysl2m6sWq.jMu0Mqf6qy2Df8vI" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 2250.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342875, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JG18wEtysl2m6sWq" +} diff --git a/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json b/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json new file mode 100644 index 00000000..19f71201 --- /dev/null +++ b/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json @@ -0,0 +1,79 @@ +{ + "_id": "ylWwhiSGGWLee2PA", + "name": "Kampfstab", + "type": "weapon", + "img": "icons/weapons/staves/staff-simple.webp", + "effects": [ + { + "_id": "1aNTAQBai6qAcWGM", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.targetedSpellcasting.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Zielzaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ylWwhiSGGWLee2PA.1aNTAQBai6qAcWGM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Zielzaubern +1, Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343583, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ylWwhiSGGWLee2PA" +} diff --git a/packs/items/Kampftrank_kIiDbrtAPno14O85.json b/packs/items/Kampftrank_kIiDbrtAPno14O85.json new file mode 100644 index 00000000..3983b2cc --- /dev/null +++ b/packs/items/Kampftrank_kIiDbrtAPno14O85.json @@ -0,0 +1,31 @@ +{ + "_id": "kIiDbrtAPno14O85", + "name": "Kampftrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-round-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Meist von oranger Farbe erhöht solch ein Trank Schlagen und Abwehr für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343317, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kIiDbrtAPno14O85" +} diff --git a/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json b/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json new file mode 100644 index 00000000..6fdb60ca --- /dev/null +++ b/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json @@ -0,0 +1,31 @@ +{ + "_id": "FPriMnCQK7DQHzJa", + "name": "Karren (2 Räder)", + "type": "loot", + "img": "icons/commodities/wood/wood-wheel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 15, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342819, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FPriMnCQK7DQHzJa" +} diff --git a/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json b/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json new file mode 100644 index 00000000..5ee0e3a1 --- /dev/null +++ b/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json @@ -0,0 +1,31 @@ +{ + "_id": "nff3XieL5dvOZga9", + "name": "Karten des Schummlers", + "type": "loot", + "img": "icons/sundries/gaming/playing-cards-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In dieses wunderschöne Spielkarten-Set ist der Zauber @Compendium[ds4.spells.BGnY1p1qZXwpzXFA]{Zeitstop} eingebettet.

", + "quantity": 1, + "price": 13031, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343351, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nff3XieL5dvOZga9" +} diff --git a/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json b/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json new file mode 100644 index 00000000..a5738541 --- /dev/null +++ b/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json @@ -0,0 +1,31 @@ +{ + "_id": "CsUnbnytOapKsjuW", + "name": "Kartenspiel", + "type": "loot", + "img": "icons/sundries/gaming/playing-cards-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342803, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CsUnbnytOapKsjuW" +} diff --git a/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json b/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json new file mode 100644 index 00000000..6809e3e5 --- /dev/null +++ b/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json @@ -0,0 +1,32 @@ +{ + "_id": "VfjAtfQv5Ga8hoHu", + "name": "Kette der Regeneration", + "type": "equipment", + "img": "icons/equipment/neck/choker-chain-thick-silver.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese schlichte Silberkette heilt in jeder Kamfprunde 1 LK.

", + "quantity": 1, + "price": null, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343052, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VfjAtfQv5Ga8hoHu" +} diff --git a/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json b/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json new file mode 100644 index 00000000..a38665a7 --- /dev/null +++ b/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json @@ -0,0 +1,35 @@ +{ + "_id": "09Hp2c2jgoXx7cV0", + "name": "Kettenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342626, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!09Hp2c2jgoXx7cV0" +} diff --git a/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json b/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json new file mode 100644 index 00000000..0880a33b --- /dev/null +++ b/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json @@ -0,0 +1,35 @@ +{ + "_id": "TcyE0faEebPLoLOD", + "name": "Kettenpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343004, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TcyE0faEebPLoLOD" +} diff --git a/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json b/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json new file mode 100644 index 00000000..613dc9ce --- /dev/null +++ b/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json @@ -0,0 +1,87 @@ +{ + "_id": "12WbnUt5h84JQxMp", + "name": "Kettenpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "gPN9UcowmdjdyGyn", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!12WbnUt5h84JQxMp.gPN9UcowmdjdyGyn" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342645, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!12WbnUt5h84JQxMp" +} diff --git a/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json b/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json new file mode 100644 index 00000000..ade86053 --- /dev/null +++ b/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json @@ -0,0 +1,87 @@ +{ + "_id": "DRClmtZNGGYtritZ", + "name": "Kettenpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "BKpvNVwaSovtKyRB", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!DRClmtZNGGYtritZ.BKpvNVwaSovtKyRB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342808, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DRClmtZNGGYtritZ" +} diff --git a/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json b/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json new file mode 100644 index 00000000..36cf5bc1 --- /dev/null +++ b/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json @@ -0,0 +1,87 @@ +{ + "_id": "pzD6fcJa1Hk4Duwu", + "name": "Keule +1", + "type": "weapon", + "img": "icons/weapons/clubs/club-simple-barbed.webp", + "effects": [ + { + "_id": "9ZyXiW0n9WJ5WQOv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pzD6fcJa1Hk4Duwu.9ZyXiW0n9WJ5WQOv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1250.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343466, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pzD6fcJa1Hk4Duwu" +} diff --git a/packs/items/Keule__2_GG7o5XbvBmmauzIw.json b/packs/items/Keule__2_GG7o5XbvBmmauzIw.json new file mode 100644 index 00000000..9f1be6d3 --- /dev/null +++ b/packs/items/Keule__2_GG7o5XbvBmmauzIw.json @@ -0,0 +1,87 @@ +{ + "_id": "GG7o5XbvBmmauzIw", + "name": "Keule +2", + "type": "weapon", + "img": "icons/weapons/clubs/club-barbed-engraved-brown.webp", + "effects": [ + { + "_id": "a8zW4tAcGbak3nno", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GG7o5XbvBmmauzIw.a8zW4tAcGbak3nno" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1750.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342855, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GG7o5XbvBmmauzIw" +} diff --git a/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json b/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json new file mode 100644 index 00000000..bfd7e9a1 --- /dev/null +++ b/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json @@ -0,0 +1,87 @@ +{ + "_id": "7g4vNrJOoX0v4Byu", + "name": "Keule +3", + "type": "weapon", + "img": "icons/weapons/clubs/club-banded-brown.webp", + "effects": [ + { + "_id": "8y8e8BsFQZZkwUXk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!7g4vNrJOoX0v4Byu.8y8e8BsFQZZkwUXk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2250.2, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342744, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7g4vNrJOoX0v4Byu" +} diff --git a/packs/items/Keule_siJAzGmpHVegUKBF.json b/packs/items/Keule_siJAzGmpHVegUKBF.json new file mode 100644 index 00000000..7913abde --- /dev/null +++ b/packs/items/Keule_siJAzGmpHVegUKBF.json @@ -0,0 +1,35 @@ +{ + "_id": "siJAzGmpHVegUKBF", + "name": "Keule", + "type": "weapon", + "img": "icons/weapons/clubs/club-simple-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 0.2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343492, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!siJAzGmpHVegUKBF" +} diff --git a/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json b/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json new file mode 100644 index 00000000..718b1a94 --- /dev/null +++ b/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json @@ -0,0 +1,31 @@ +{ + "_id": "3zqSBuiQWIsIov4h", + "name": "Kletterausrüstung", + "type": "loot", + "img": "icons/sundries/survival/rope-wrapped-loops-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342702, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3zqSBuiQWIsIov4h" +} diff --git a/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json b/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json new file mode 100644 index 00000000..58fb97d2 --- /dev/null +++ b/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json @@ -0,0 +1,31 @@ +{ + "_id": "udsNOh5h0TQmOYBl", + "name": "Klettertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann für W20 Runden mit seinem normalen Laufen-Wert wie eine Spinne klettern, selbst kopfüber an der Decke.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343544, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!udsNOh5h0TQmOYBl" +} diff --git a/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json b/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json new file mode 100644 index 00000000..71f17eba --- /dev/null +++ b/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json @@ -0,0 +1,130 @@ +{ + "_id": "zWMPzHIY3vkrCIEJ", + "name": "Kluft des Jägers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-green.webp", + "effects": [ + { + "_id": "RXgVHCUhqvSvdubt", + "flags": {}, + "changes": [ + { + "key": "system.traits.agility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Bewegung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zWMPzHIY3vkrCIEJ.RXgVHCUhqvSvdubt" + }, + { + "_id": "XsKZUk7lLh6egc89", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Jäger", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Jäger +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zWMPzHIY3vkrCIEJ.XsKZUk7lLh6egc89" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese braun-grüne Lederrüstung gewährt neben Jäger +I ihrem Träger +1 auf Bewegung.

", + "quantity": 1, + "price": 1504, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343602, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zWMPzHIY3vkrCIEJ" +} diff --git a/packs/items/Kompass_xwjafjsWdZJBVN0A.json b/packs/items/Kompass_xwjafjsWdZJBVN0A.json new file mode 100644 index 00000000..fd8bd6f9 --- /dev/null +++ b/packs/items/Kompass_xwjafjsWdZJBVN0A.json @@ -0,0 +1,31 @@ +{ + "_id": "xwjafjsWdZJBVN0A", + "name": "Kompass", + "type": "loot", + "img": "icons/tools/navigation/compass-brass-blue-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 35, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343573, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xwjafjsWdZJBVN0A" +} diff --git a/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json b/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json new file mode 100644 index 00000000..17d3e41f --- /dev/null +++ b/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json @@ -0,0 +1,31 @@ +{ + "_id": "W2dHT0OENc5kNwnZ", + "name": "Konzentrationstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft graue Trank verdoppelt GEI für GEI in Runden.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343054, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!W2dHT0OENc5kNwnZ" +} diff --git a/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json b/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json new file mode 100644 index 00000000..e9728dd4 --- /dev/null +++ b/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json @@ -0,0 +1,84 @@ +{ + "_id": "c3YlvFbZJD6LbhVi", + "name": "Kriegshorn", + "type": "equipment", + "img": "icons/commodities/treasure/horn-carved-banded.webp", + "effects": [ + { + "_id": "DZXHZOg7edkW2RS2", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Schlachtruf", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlachtruf +I", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!c3YlvFbZJD6LbhVi.DZXHZOg7edkW2RS2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Klang des Horns feuert die Kampfgefährten mit seinem eingebetteten Schlachtruf +I an.

", + "quantity": 1, + "price": 2750.05, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343102, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c3YlvFbZJD6LbhVi" +} diff --git a/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json b/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json new file mode 100644 index 00000000..428b2803 --- /dev/null +++ b/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json @@ -0,0 +1,31 @@ +{ + "_id": "PQfSHYKxPqia6nG3", + "name": "Kristallkugel", + "type": "loot", + "img": "icons/tools/laboratory/alembic-glass-ball-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber @Compendium[ds4.spells.xR5aBGFz3916e82x]{Spionage} ist in diese äußerst zerbrechliche Kugel eingebettet.

", + "quantity": 1, + "price": 1485, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342932, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PQfSHYKxPqia6nG3" +} diff --git a/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json b/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json new file mode 100644 index 00000000..9ef91f96 --- /dev/null +++ b/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json @@ -0,0 +1,35 @@ +{ + "_id": "FbfsU0H1E7wCxm0q", + "name": "Krummsäbel", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-worn-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342827, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FbfsU0H1E7wCxm0q" +} diff --git a/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json b/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json new file mode 100644 index 00000000..5bf30ec3 --- /dev/null +++ b/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json @@ -0,0 +1,87 @@ +{ + "_id": "R1cxU1hzcLopZwhA", + "name": "Krummsäbel +1", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard.webp", + "effects": [ + { + "_id": "uYIt59oaCKobgftJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!R1cxU1hzcLopZwhA.uYIt59oaCKobgftJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342955, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R1cxU1hzcLopZwhA" +} diff --git a/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json b/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json new file mode 100644 index 00000000..b5c50390 --- /dev/null +++ b/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json @@ -0,0 +1,87 @@ +{ + "_id": "2C0GH1sYXj8QtRTK", + "name": "Krummsäbel +2", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-brown.webp", + "effects": [ + { + "_id": "xjUL1B0P5jhze3vQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2C0GH1sYXj8QtRTK.xjUL1B0P5jhze3vQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342675, + "modifiedTime": 1740227862964, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2C0GH1sYXj8QtRTK" +} diff --git a/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json b/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json new file mode 100644 index 00000000..11a7fb97 --- /dev/null +++ b/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json @@ -0,0 +1,87 @@ +{ + "_id": "8B4biRyQ6SN0fYtl", + "name": "Krummsäbel +3", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-red.webp", + "effects": [ + { + "_id": "muxy8RtkuaOsrY2H", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8B4biRyQ6SN0fYtl.muxy8RtkuaOsrY2H" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342759, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8B4biRyQ6SN0fYtl" +} diff --git a/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json b/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json new file mode 100644 index 00000000..8b075029 --- /dev/null +++ b/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json @@ -0,0 +1,35 @@ +{ + "_id": "0EwYRuQCBmE3LIm2", + "name": "Krummschwert", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-broad.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342629, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0EwYRuQCBmE3LIm2" +} diff --git a/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json b/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json new file mode 100644 index 00000000..c7ed30e0 --- /dev/null +++ b/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json @@ -0,0 +1,87 @@ +{ + "_id": "7CCoTap4GzN1uSNw", + "name": "Krummschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-guard-wood.webp", + "effects": [ + { + "_id": "Vg3Q9A7QIXHrABFk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!7CCoTap4GzN1uSNw.Vg3Q9A7QIXHrABFk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342737, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7CCoTap4GzN1uSNw" +} diff --git a/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json b/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json new file mode 100644 index 00000000..1837e687 --- /dev/null +++ b/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json @@ -0,0 +1,87 @@ +{ + "_id": "3ZCLI6UN4i0zTeuv", + "name": "Krummschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-bone.webp", + "effects": [ + { + "_id": "MUERgL0DjjZR3sv0", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!3ZCLI6UN4i0zTeuv.MUERgL0DjjZR3sv0" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342698, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3ZCLI6UN4i0zTeuv" +} diff --git a/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json b/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json new file mode 100644 index 00000000..5645f32b --- /dev/null +++ b/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json @@ -0,0 +1,87 @@ +{ + "_id": "opq2AakrpM9gLSa0", + "name": "Krummschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/scimitar-blue.webp", + "effects": [ + { + "_id": "RGYzuIow1nDLd681", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!opq2AakrpM9gLSa0.RGYzuIow1nDLd681" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343410, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!opq2AakrpM9gLSa0" +} diff --git a/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json b/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json new file mode 100644 index 00000000..d86ce715 --- /dev/null +++ b/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json @@ -0,0 +1,122 @@ +{ + "_id": "ZLDJNdtwxbdiJOP2", + "name": "Kundschafterpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-leather.webp", + "effects": [ + { + "_id": "EkJB0kpYFHRMYSgl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZLDJNdtwxbdiJOP2.EkJB0kpYFHRMYSgl" + }, + { + "_id": "mq2ViimrfXr7sGC7", + "flags": {}, + "changes": [ + { + "key": "system.traits.agility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Bewegung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZLDJNdtwxbdiJOP2.mq2ViimrfXr7sGC7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit braunen Fellschulterpolstern verzierte Kettenrüstung gewährt ihrem Träger +1 auf Bewegung.

\n

Laufen -0,5

", + "quantity": 1, + "price": 1260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343083, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZLDJNdtwxbdiJOP2" +} diff --git a/packs/items/Kurzbogen_QsnvAep80sSVJToD.json b/packs/items/Kurzbogen_QsnvAep80sSVJToD.json new file mode 100644 index 00000000..81e2eeae --- /dev/null +++ b/packs/items/Kurzbogen_QsnvAep80sSVJToD.json @@ -0,0 +1,35 @@ +{ + "_id": "QsnvAep80sSVJToD", + "name": "Kurzbogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342954, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QsnvAep80sSVJToD" +} diff --git a/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json b/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json new file mode 100644 index 00000000..4de46dad --- /dev/null +++ b/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json @@ -0,0 +1,35 @@ +{ + "_id": "6WqPqjMQMMPjV99U", + "name": "Kurzbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342732, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6WqPqjMQMMPjV99U" +} diff --git a/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json b/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json new file mode 100644 index 00000000..53951884 --- /dev/null +++ b/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json @@ -0,0 +1,87 @@ +{ + "_id": "1hmprC7XVhIPemy5", + "name": "Kurzbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve.webp", + "effects": [ + { + "_id": "VkuGm7hES83WX4HD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1hmprC7XVhIPemy5.VkuGm7hES83WX4HD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342654, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1hmprC7XVhIPemy5" +} diff --git a/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json b/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json new file mode 100644 index 00000000..bcd9476f --- /dev/null +++ b/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json @@ -0,0 +1,130 @@ +{ + "_id": "RKKhoedvylYWFBN3", + "name": "Kurzbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-blue.webp", + "effects": [ + { + "_id": "zgiIGlRMVCgAzrn7", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RKKhoedvylYWFBN3.zgiIGlRMVCgAzrn7" + }, + { + "_id": "OQr5POyJ0Azklftu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RKKhoedvylYWFBN3.OQr5POyJ0Azklftu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342963, + "modifiedTime": 1740227862995, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RKKhoedvylYWFBN3" +} diff --git a/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json b/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json new file mode 100644 index 00000000..c3d3402d --- /dev/null +++ b/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json @@ -0,0 +1,35 @@ +{ + "_id": "Sj1iVgklsdFtLq8M", + "name": "Kurzschwert", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-brass.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342989, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sj1iVgklsdFtLq8M" +} diff --git a/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json b/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json new file mode 100644 index 00000000..2e72bcd1 --- /dev/null +++ b/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json @@ -0,0 +1,87 @@ +{ + "_id": "8la7FJ8kpGNUWrCg", + "name": "Kurzschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-green.webp", + "effects": [ + { + "_id": "CElngj6OWPpIw37j", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8la7FJ8kpGNUWrCg.CElngj6OWPpIw37j" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342764, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8la7FJ8kpGNUWrCg" +} diff --git a/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json b/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json new file mode 100644 index 00000000..b0d3087a --- /dev/null +++ b/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json @@ -0,0 +1,87 @@ +{ + "_id": "MO1ga2aLjjkBZRzt", + "name": "Kurzschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-silver.webp", + "effects": [ + { + "_id": "qkDy1MWD6Fkk97e6", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MO1ga2aLjjkBZRzt.qkDy1MWD6Fkk97e6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342906, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MO1ga2aLjjkBZRzt" +} diff --git a/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json b/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json new file mode 100644 index 00000000..7b4fd894 --- /dev/null +++ b/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json @@ -0,0 +1,87 @@ +{ + "_id": "F1XnlA28XCnT7Y0V", + "name": "Kurzschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/shortsword-guard-gold-red.webp", + "effects": [ + { + "_id": "FZMhm4De8EXj7dBZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!F1XnlA28XCnT7Y0V.FZMhm4De8EXj7dBZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342815, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!F1XnlA28XCnT7Y0V" +} diff --git a/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json b/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json new file mode 100644 index 00000000..ed7f447e --- /dev/null +++ b/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json @@ -0,0 +1,87 @@ +{ + "_id": "EwjFWRaLhR33wP92", + "name": "Langbogen +1", + "type": "weapon", + "img": "icons/weapons/bows/bow-ornamental-silver-black.webp", + "effects": [ + { + "_id": "zQsujP8ZT0cwdtqk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!EwjFWRaLhR33wP92.zQsujP8ZT0cwdtqk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 1760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342814, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!EwjFWRaLhR33wP92" +} diff --git a/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json b/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json new file mode 100644 index 00000000..1e03f2d0 --- /dev/null +++ b/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json @@ -0,0 +1,130 @@ +{ + "_id": "gVwoOpuHkmwvcUow", + "name": "Langbogen +2", + "type": "weapon", + "img": "icons/weapons/bows/bow-ornamental-gold-blue.webp", + "effects": [ + { + "_id": "XsqzwEX1AvYJyczG", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gVwoOpuHkmwvcUow.XsqzwEX1AvYJyczG" + }, + { + "_id": "iUXn0CQKZw6Rr1yH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gVwoOpuHkmwvcUow.iUXn0CQKZw6Rr1yH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343210, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gVwoOpuHkmwvcUow" +} diff --git a/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json b/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json new file mode 100644 index 00000000..b6888efb --- /dev/null +++ b/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json @@ -0,0 +1,87 @@ +{ + "_id": "WiW9Sad1D2HjkNMz", + "name": "Langbogen +3", + "type": "weapon", + "img": "icons/weapons/bows/bow-recurve-black.webp", + "effects": [ + { + "_id": "B6tNz4B208qZf3JU", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!WiW9Sad1D2HjkNMz.B6tNz4B208qZf3JU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343058, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WiW9Sad1D2HjkNMz" +} diff --git a/packs/items/Langbogen_fmunGPk80ObkIzUl.json b/packs/items/Langbogen_fmunGPk80ObkIzUl.json new file mode 100644 index 00000000..16f095bb --- /dev/null +++ b/packs/items/Langbogen_fmunGPk80ObkIzUl.json @@ -0,0 +1,35 @@ +{ + "_id": "fmunGPk80ObkIzUl", + "name": "Langbogen", + "type": "weapon", + "img": "icons/weapons/bows/longbow-leather-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 10, + "availability": "city", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343202, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fmunGPk80ObkIzUl" +} diff --git a/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json b/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json new file mode 100644 index 00000000..7433c756 --- /dev/null +++ b/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json @@ -0,0 +1,87 @@ +{ + "_id": "dMbjx675yI2F4rUg", + "name": "Langschwert +1", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-embossed-green.webp", + "effects": [ + { + "_id": "l7qeGLLyuz7VXAAd", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dMbjx675yI2F4rUg.l7qeGLLyuz7VXAAd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343138, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dMbjx675yI2F4rUg" +} diff --git a/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json b/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json new file mode 100644 index 00000000..1fda322b --- /dev/null +++ b/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json @@ -0,0 +1,87 @@ +{ + "_id": "i1ZcbKzviqz0nxjV", + "name": "Langschwert +2", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-purple.webp", + "effects": [ + { + "_id": "5JZ001rLJuZMJSrD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!i1ZcbKzviqz0nxjV.5JZ001rLJuZMJSrD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343243, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!i1ZcbKzviqz0nxjV" +} diff --git a/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json b/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json new file mode 100644 index 00000000..0a9d50c9 --- /dev/null +++ b/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json @@ -0,0 +1,87 @@ +{ + "_id": "Dg8qq9n5FFxZG68k", + "name": "Langschwert +3", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-engraved.webp", + "effects": [ + { + "_id": "DSf5BV955w2hKZuf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Dg8qq9n5FFxZG68k.DSf5BV955w2hKZuf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342810, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Dg8qq9n5FFxZG68k" +} diff --git a/packs/items/Langschwert_htmQWmMCQN620KrE.json b/packs/items/Langschwert_htmQWmMCQN620KrE.json new file mode 100644 index 00000000..7f0582d1 --- /dev/null +++ b/packs/items/Langschwert_htmQWmMCQN620KrE.json @@ -0,0 +1,35 @@ +{ + "_id": "htmQWmMCQN620KrE", + "name": "Langschwert", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343241, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!htmQWmMCQN620KrE" +} diff --git a/packs/items/Lanze_DS11ssHOcZTdZiLK.json b/packs/items/Lanze_DS11ssHOcZTdZiLK.json new file mode 100644 index 00000000..494e7951 --- /dev/null +++ b/packs/items/Lanze_DS11ssHOcZTdZiLK.json @@ -0,0 +1,35 @@ +{ + "_id": "DS11ssHOcZTdZiLK", + "name": "Lanze", + "type": "weapon", + "img": "icons/weapons/polearms/spear-simple-engraved.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4), Zerbricht bei Schlagen-Patzer

", + "quantity": 1, + "price": 2, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": null, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342809, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DS11ssHOcZTdZiLK" +} diff --git a/packs/items/Lanze__1_upkDR02zMILTPib6.json b/packs/items/Lanze__1_upkDR02zMILTPib6.json new file mode 100644 index 00000000..7142a514 --- /dev/null +++ b/packs/items/Lanze__1_upkDR02zMILTPib6.json @@ -0,0 +1,87 @@ +{ + "_id": "upkDR02zMILTPib6", + "name": "Lanze +1", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-green.webp", + "effects": [ + { + "_id": "d8N240qBKaRGqkcf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!upkDR02zMILTPib6.d8N240qBKaRGqkcf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343547, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!upkDR02zMILTPib6" +} diff --git a/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json b/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json new file mode 100644 index 00000000..da269f8e --- /dev/null +++ b/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json @@ -0,0 +1,87 @@ +{ + "_id": "5MrsKOS4sAxpMv2U", + "name": "Lanze +2", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-blue.webp", + "effects": [ + { + "_id": "iLA1AQrTlmA0BFnC", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5MrsKOS4sAxpMv2U.iLA1AQrTlmA0BFnC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342718, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5MrsKOS4sAxpMv2U" +} diff --git a/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json b/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json new file mode 100644 index 00000000..d024768b --- /dev/null +++ b/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json @@ -0,0 +1,87 @@ +{ + "_id": "bVeWMNBKPWRqrFGj", + "name": "Lanze +3", + "type": "weapon", + "img": "icons/weapons/polearms/spear-flared-purple.webp", + "effects": [ + { + "_id": "5CFUcYAipdyZHdde", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!bVeWMNBKPWRqrFGj.5CFUcYAipdyZHdde" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", + "quantity": 1, + "price": 2252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343098, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bVeWMNBKPWRqrFGj" +} diff --git a/packs/items/Laterne_ZyML0QPctIXK8A4c.json b/packs/items/Laterne_ZyML0QPctIXK8A4c.json new file mode 100644 index 00000000..f8f6aa37 --- /dev/null +++ b/packs/items/Laterne_ZyML0QPctIXK8A4c.json @@ -0,0 +1,31 @@ +{ + "_id": "ZyML0QPctIXK8A4c", + "name": "Laterne", + "type": "loot", + "img": "icons/sundries/lights/lantern-iron-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343085, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZyML0QPctIXK8A4c" +} diff --git a/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json b/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json new file mode 100644 index 00000000..90821547 --- /dev/null +++ b/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json @@ -0,0 +1,31 @@ +{ + "_id": "C2ggZE3ifOXlonkj", + "name": "Laternenöl (brennt 4h)", + "type": "loot", + "img": "icons/containers/kitchenware/vase-clay-cracked-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342799, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!C2ggZE3ifOXlonkj" +} diff --git a/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json b/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json new file mode 100644 index 00000000..b2abfdc7 --- /dev/null +++ b/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json @@ -0,0 +1,31 @@ +{ + "_id": "d4OegxLYAGpzMFsc", + "name": "Lederbecher", + "type": "loot", + "img": "icons/containers/kitchenware/mug-stein-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343127, + "modifiedTime": 1740227863010, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d4OegxLYAGpzMFsc" +} diff --git a/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json b/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json new file mode 100644 index 00000000..add0b62a --- /dev/null +++ b/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json @@ -0,0 +1,35 @@ +{ + "_id": "60MhQmXh0c2cT5nx", + "name": "Lederpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342726, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!60MhQmXh0c2cT5nx" +} diff --git a/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json b/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json new file mode 100644 index 00000000..59b9e735 --- /dev/null +++ b/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json @@ -0,0 +1,35 @@ +{ + "_id": "GgYd2UCD2Juq7EUF", + "name": "Lederpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-collared-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342860, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GgYd2UCD2Juq7EUF" +} diff --git a/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json b/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json new file mode 100644 index 00000000..aaea18dd --- /dev/null +++ b/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json @@ -0,0 +1,35 @@ +{ + "_id": "JUTPfEGHEEwpeLvv", + "name": "Lederpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-studded-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342876, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JUTPfEGHEEwpeLvv" +} diff --git a/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json b/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json new file mode 100644 index 00000000..b83da0e4 --- /dev/null +++ b/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json @@ -0,0 +1,87 @@ +{ + "_id": "A6hSQX9cPpoWHiOh", + "name": "Lederpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-studded.webp", + "effects": [ + { + "_id": "pYb7mMRhc5KBnUJT", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A6hSQX9cPpoWHiOh.pYb7mMRhc5KBnUJT" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342779, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A6hSQX9cPpoWHiOh" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json b/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json new file mode 100644 index 00000000..eaa3423c --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json @@ -0,0 +1,87 @@ +{ + "_id": "yuSDAJwN3NFfcTSE", + "name": "Lederpanzer (Für Reittiere) +1", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "ISagK3JV33VmnmoX", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yuSDAJwN3NFfcTSE.ISagK3JV33VmnmoX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343590, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yuSDAJwN3NFfcTSE" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json b/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json new file mode 100644 index 00000000..d4ade773 --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json @@ -0,0 +1,87 @@ +{ + "_id": "QNJVRtALi17otgDU", + "name": "Lederpanzer (Für Reittiere) +2", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "9qPThLRf5cwflety", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!QNJVRtALi17otgDU.9qPThLRf5cwflety" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342944, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QNJVRtALi17otgDU" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json b/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json new file mode 100644 index 00000000..4323a26d --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json @@ -0,0 +1,87 @@ +{ + "_id": "34fD45Yzi3s2cSgy", + "name": "Lederpanzer (Für Reittiere) +3", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [ + { + "_id": "DY0fXwaK8RHbyo75", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!34fD45Yzi3s2cSgy.DY0fXwaK8RHbyo75" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4262, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342696, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!34fD45Yzi3s2cSgy" +} diff --git a/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json b/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json new file mode 100644 index 00000000..da52fe50 --- /dev/null +++ b/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json @@ -0,0 +1,35 @@ +{ + "_id": "aNGn2tplXGSikyV7", + "name": "Lederpanzer (Für Reittiere)", + "type": "armor", + "img": "icons/commodities/leather/leather-leaf-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 12, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343088, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aNGn2tplXGSikyV7" +} diff --git a/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json b/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json new file mode 100644 index 00000000..d834f744 --- /dev/null +++ b/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json @@ -0,0 +1,35 @@ +{ + "_id": "GgWdEi4yyPb1wqYn", + "name": "Lederschienen", + "type": "armor", + "img": "icons/equipment/wrist/bracer-simple-leather.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342859, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GgWdEi4yyPb1wqYn" +} diff --git a/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json b/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json new file mode 100644 index 00000000..51164e25 --- /dev/null +++ b/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json @@ -0,0 +1,87 @@ +{ + "_id": "Hna91ve4yx84u7zJ", + "name": "Lederschienen +1", + "type": "armor", + "img": "icons/equipment/wrist/bracer-simple-leather-steel.webp", + "effects": [ + { + "_id": "KL8cnKi5NITkDENS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Hna91ve4yx84u7zJ.KL8cnKi5NITkDENS" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 2254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342866, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Hna91ve4yx84u7zJ" +} diff --git a/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json b/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json new file mode 100644 index 00000000..edd4098e --- /dev/null +++ b/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json @@ -0,0 +1,87 @@ +{ + "_id": "yleQcy5mTJ5jn3RZ", + "name": "Lederschienen +2", + "type": "armor", + "img": "icons/equipment/wrist/bracer-straight-leather-red.webp", + "effects": [ + { + "_id": "YzSUbB0a2EknrxQQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yleQcy5mTJ5jn3RZ.YzSUbB0a2EknrxQQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 3254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343585, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yleQcy5mTJ5jn3RZ" +} diff --git a/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json b/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json new file mode 100644 index 00000000..4b7e5f46 --- /dev/null +++ b/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json @@ -0,0 +1,87 @@ +{ + "_id": "Aw9aoumlI69gYv75", + "name": "Lederschienen +3", + "type": "armor", + "img": "icons/equipment/wrist/bracer-banded-leather-black.webp", + "effects": [ + { + "_id": "LE8TRjZF13O6kDB8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Aw9aoumlI69gYv75.LE8TRjZF13O6kDB8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

An Arm & Bein

", + "quantity": 1, + "price": 4254, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "vambraceGreaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342791, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Aw9aoumlI69gYv75" +} diff --git a/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json b/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json new file mode 100644 index 00000000..dd2662c7 --- /dev/null +++ b/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json @@ -0,0 +1,87 @@ +{ + "_id": "9MsBlnMhvAMe4zTk", + "name": "Leichte Armbrust +1", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-brown.webp", + "effects": [ + { + "_id": "sACwF2e5qLRs6c1a", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9MsBlnMhvAMe4zTk.sACwF2e5qLRs6c1a" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 1758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342769, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9MsBlnMhvAMe4zTk" +} diff --git a/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json b/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json new file mode 100644 index 00000000..acc839db --- /dev/null +++ b/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json @@ -0,0 +1,87 @@ +{ + "_id": "PihP9eVyE4UEi1jj", + "name": "Leichte Armbrust +2", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-black.webp", + "effects": [ + { + "_id": "63yxBIQ4ZvuvtVsV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!PihP9eVyE4UEi1jj.63yxBIQ4ZvuvtVsV" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342939, + "modifiedTime": 1740227862990, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PihP9eVyE4UEi1jj" +} diff --git a/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json b/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json new file mode 100644 index 00000000..bca89614 --- /dev/null +++ b/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json @@ -0,0 +1,87 @@ +{ + "_id": "XSXEDiMN27cuEoOx", + "name": "Leichte Armbrust +3", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-purple.webp", + "effects": [ + { + "_id": "z2uPOzDQ47VbWmt5", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XSXEDiMN27cuEoOx.z2uPOzDQ47VbWmt5" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2758, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343066, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XSXEDiMN27cuEoOx" +} diff --git a/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json b/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json new file mode 100644 index 00000000..8e3b4917 --- /dev/null +++ b/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json @@ -0,0 +1,80 @@ +{ + "_id": "fnq4WOljIoYdbsUT", + "name": "Leichte Armbrust", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-simple-purple.webp", + "effects": [ + { + "_id": "gMm2PnBADqXBrCi1", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fnq4WOljIoYdbsUT.gMm2PnBADqXBrCi1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": 0, + "name": " +1" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343203, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fnq4WOljIoYdbsUT" +} diff --git a/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json b/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json new file mode 100644 index 00000000..7385e3c1 --- /dev/null +++ b/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json @@ -0,0 +1,84 @@ +{ + "_id": "9xjica2DVZso8NIU", + "name": "Mantel der Augen", + "type": "equipment", + "img": "icons/equipment/back/cloak-collared-red.webp", + "effects": [ + { + "_id": "7I80O404E6ty4pHv", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Wahrnehmung", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wahrnehmung +III", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9xjica2DVZso8NIU.7I80O404E6ty4pHv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser mit Augenmustern bestickte Mantel gewährt seinem Träger Wahrnehmung +III.

", + "quantity": 1, + "price": 376, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342776, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9xjica2DVZso8NIU" +} diff --git a/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json b/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json new file mode 100644 index 00000000..ef223141 --- /dev/null +++ b/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json @@ -0,0 +1,31 @@ +{ + "_id": "7JCc96rbTbTSASbT", + "name": "Metallbesteck", + "type": "loot", + "img": "icons/tools/cooking/fork-steel-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342741, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7JCc96rbTbTSASbT" +} diff --git a/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json b/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json new file mode 100644 index 00000000..ebc1bfb9 --- /dev/null +++ b/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json @@ -0,0 +1,87 @@ +{ + "_id": "esfwvMs1ffgSXjbS", + "name": "Metallhelm +1", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-rounded-steel.webp", + "effects": [ + { + "_id": "uo5922qyPvi35mhm", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!esfwvMs1ffgSXjbS.uo5922qyPvi35mhm" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343188, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!esfwvMs1ffgSXjbS" +} diff --git a/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json b/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json new file mode 100644 index 00000000..9b243441 --- /dev/null +++ b/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json @@ -0,0 +1,87 @@ +{ + "_id": "9PdQv9CRy4ckaF0j", + "name": "Metallhelm +2", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-engraved.webp", + "effects": [ + { + "_id": "9IOcWr1CbRpF3lya", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9PdQv9CRy4ckaF0j.9IOcWr1CbRpF3lya" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342772, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9PdQv9CRy4ckaF0j" +} diff --git a/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json b/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json new file mode 100644 index 00000000..281d9ca6 --- /dev/null +++ b/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json @@ -0,0 +1,87 @@ +{ + "_id": "A109X3ZiGGGiWCze", + "name": "Metallhelm +3", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-engraved-steel.webp", + "effects": [ + { + "_id": "vhwepr5mHZHWDkCf", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A109X3ZiGGGiWCze.vhwepr5mHZHWDkCf" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342777, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A109X3ZiGGGiWCze" +} diff --git a/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json b/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json new file mode 100644 index 00000000..798a246f --- /dev/null +++ b/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json @@ -0,0 +1,79 @@ +{ + "_id": "fKhTsMO4YXDYY8GX", + "name": "Metallhelm", + "type": "armor", + "img": "icons/equipment/head/helm-barbute-reinforced.webp", + "effects": [ + { + "_id": "wlQWjU1kXovR5G1J", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fKhTsMO4YXDYY8GX.wlQWjU1kXovR5G1J" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -1

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "helmet" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343198, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fKhTsMO4YXDYY8GX" +} diff --git a/packs/items/Metallkrug_egleYygLWn8IfeuF.json b/packs/items/Metallkrug_egleYygLWn8IfeuF.json new file mode 100644 index 00000000..1959b950 --- /dev/null +++ b/packs/items/Metallkrug_egleYygLWn8IfeuF.json @@ -0,0 +1,31 @@ +{ + "_id": "egleYygLWn8IfeuF", + "name": "Metallkrug", + "type": "loot", + "img": "icons/containers/kitchenware/mug-steel-wood-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343177, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!egleYygLWn8IfeuF" +} diff --git a/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json b/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json new file mode 100644 index 00000000..65d357ff --- /dev/null +++ b/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json @@ -0,0 +1,85 @@ +{ + "_id": "iGiZU77IGQQqlYFr", + "name": "Metallschild +1", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-grey.webp", + "effects": [ + { + "_id": "9xMdH6XQxlulL7wv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!iGiZU77IGQQqlYFr.9xMdH6XQxlulL7wv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343247, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iGiZU77IGQQqlYFr" +} diff --git a/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json b/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json new file mode 100644 index 00000000..510dfcec --- /dev/null +++ b/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json @@ -0,0 +1,85 @@ +{ + "_id": "XyDt7MThnLkDCldV", + "name": "Metallschild +2", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-sword-yellow-black.webp", + "effects": [ + { + "_id": "MidC9f4kBbIz7Z7S", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XyDt7MThnLkDCldV.MidC9f4kBbIz7Z7S" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343075, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XyDt7MThnLkDCldV" +} diff --git a/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json b/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json new file mode 100644 index 00000000..8615b23e --- /dev/null +++ b/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json @@ -0,0 +1,85 @@ +{ + "_id": "FKg3YI1EtiNfDcYO", + "name": "Metallschild +3", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-spiral.webp", + "effects": [ + { + "_id": "KZBNNdOmSqFkXC0X", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FKg3YI1EtiNfDcYO.KZBNNdOmSqFkXC0X" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342817, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FKg3YI1EtiNfDcYO" +} diff --git a/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json b/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json new file mode 100644 index 00000000..fa534f42 --- /dev/null +++ b/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json @@ -0,0 +1,77 @@ +{ + "_id": "gyfU78OLQj8qH3Zh", + "name": "Metallschild", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-worn.webp", + "effects": [ + { + "_id": "kDcyXkLx75K2YRCl", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gyfU78OLQj8qH3Zh.kDcyXkLx75K2YRCl" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 8, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343221, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gyfU78OLQj8qH3Zh" +} diff --git a/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json b/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json new file mode 100644 index 00000000..7f7812c0 --- /dev/null +++ b/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json @@ -0,0 +1,35 @@ +{ + "_id": "QNDLfvjiv9szUTYT", + "name": "Morgenstern", + "type": "weapon", + "img": "icons/weapons/maces/mace-flanged-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342942, + "modifiedTime": 1740227862991, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QNDLfvjiv9szUTYT" +} diff --git a/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json b/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json new file mode 100644 index 00000000..a8beebf6 --- /dev/null +++ b/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json @@ -0,0 +1,87 @@ +{ + "_id": "u1ycDWee8nHPfZHA", + "name": "Morgenstern +1", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-studded.webp", + "effects": [ + { + "_id": "nTOl8E9qA6stLcEJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!u1ycDWee8nHPfZHA.nTOl8E9qA6stLcEJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343519, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!u1ycDWee8nHPfZHA" +} diff --git a/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json b/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json new file mode 100644 index 00000000..2ece9fa8 --- /dev/null +++ b/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json @@ -0,0 +1,87 @@ +{ + "_id": "TSoSy8ck9XCUa1SM", + "name": "Morgenstern +2", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-spiked-grey.webp", + "effects": [ + { + "_id": "fZ3VByauGosUUN3D", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TSoSy8ck9XCUa1SM.fZ3VByauGosUUN3D" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343000, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TSoSy8ck9XCUa1SM" +} diff --git a/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json b/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json new file mode 100644 index 00000000..df8ccd37 --- /dev/null +++ b/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json @@ -0,0 +1,87 @@ +{ + "_id": "czxph9BZaC6Cj7kM", + "name": "Morgenstern +3", + "type": "weapon", + "img": "icons/weapons/maces/mace-round-spiked-black.webp", + "effects": [ + { + "_id": "JzKt4gdYSSlA6hSo", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!czxph9BZaC6Cj7kM.JzKt4gdYSSlA6hSo" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343120, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!czxph9BZaC6Cj7kM" +} diff --git a/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json b/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json new file mode 100644 index 00000000..07e67fab --- /dev/null +++ b/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json @@ -0,0 +1,138 @@ +{ + "_id": "RGyfv3y0LxHORAzA", + "name": "Orkspalter", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-runes.webp", + "effects": [ + { + "_id": "armx56Psy1qosJib", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RGyfv3y0LxHORAzA.armx56Psy1qosJib" + }, + { + "_id": "qr1bY5zTm5ViDmnd", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Brutaler Hieb", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Brutaler Hieb +II", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RGyfv3y0LxHORAzA.qr1bY5zTm5ViDmnd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine alte, legendäre Zwergenaxt +1 mit Brutaler Hieb +II.

\n

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 4310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342960, + "modifiedTime": 1740227862995, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RGyfv3y0LxHORAzA" +} diff --git a/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json b/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json new file mode 100644 index 00000000..9ad35db6 --- /dev/null +++ b/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json @@ -0,0 +1,31 @@ +{ + "_id": "uVYJY3A8kLne2ZkQ", + "name": "Parfüm (50 x benutzbar)", + "type": "loot", + "img": "icons/tools/laboratory/vial-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gibt 4 Stunden lang +1 auf Proben sozialer Interaktion mit anderem Geschlecht

", + "quantity": 1, + "price": 5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343526, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uVYJY3A8kLne2ZkQ" +} diff --git a/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json b/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json new file mode 100644 index 00000000..c858d43e --- /dev/null +++ b/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json @@ -0,0 +1,31 @@ +{ + "_id": "zx3FKwvrLw147ARX", + "name": "Pergamentblatt", + "type": "loot", + "img": "icons/sundries/documents/paper-plain-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343620, + "modifiedTime": 1740227863032, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zx3FKwvrLw147ARX" +} diff --git a/packs/items/Pfanne_pYP26CskxKade3GF.json b/packs/items/Pfanne_pYP26CskxKade3GF.json new file mode 100644 index 00000000..64fda214 --- /dev/null +++ b/packs/items/Pfanne_pYP26CskxKade3GF.json @@ -0,0 +1,31 @@ +{ + "_id": "pYP26CskxKade3GF", + "name": "Pfanne", + "type": "loot", + "img": "icons/tools/cooking/pot-camping-iron-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343456, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pYP26CskxKade3GF" +} diff --git a/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json b/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json new file mode 100644 index 00000000..750075ec --- /dev/null +++ b/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json @@ -0,0 +1,31 @@ +{ + "_id": "iOAmrK7t7ZyrtGy1", + "name": "Pfeife", + "type": "loot", + "img": "icons/sundries/misc/pipe-wooden-straight-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343253, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iOAmrK7t7ZyrtGy1" +} diff --git a/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json b/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json new file mode 100644 index 00000000..eca2701a --- /dev/null +++ b/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json @@ -0,0 +1,79 @@ +{ + "_id": "RsKimH7snoPFlg4L", + "name": "Plattenarmschienen", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel.webp", + "effects": [ + { + "_id": "DxcTuYT1mUpj9RdQ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RsKimH7snoPFlg4L.DxcTuYT1mUpj9RdQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 7, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342970, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RsKimH7snoPFlg4L" +} diff --git a/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json b/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json new file mode 100644 index 00000000..6e9b43cf --- /dev/null +++ b/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json @@ -0,0 +1,87 @@ +{ + "_id": "XBCdDIpdR1weOhiy", + "name": "Plattenarmschienen +1", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-white.webp", + "effects": [ + { + "_id": "IwrLITAgM3vLzkwA", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!XBCdDIpdR1weOhiy.IwrLITAgM3vLzkwA" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343061, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XBCdDIpdR1weOhiy" +} diff --git a/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json b/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json new file mode 100644 index 00000000..44cd6d90 --- /dev/null +++ b/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json @@ -0,0 +1,87 @@ +{ + "_id": "VQtcpPYhzifN9Lqr", + "name": "Plattenarmschienen +2", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-worn.webp", + "effects": [ + { + "_id": "pPtRJMUFA3gbNZXx", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VQtcpPYhzifN9Lqr.pPtRJMUFA3gbNZXx" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343049, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VQtcpPYhzifN9Lqr" +} diff --git a/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json b/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json new file mode 100644 index 00000000..8fb15426 --- /dev/null +++ b/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json @@ -0,0 +1,87 @@ +{ + "_id": "2BNzuiU6wc3r9ByF", + "name": "Plattenarmschienen +3", + "type": "armor", + "img": "icons/equipment/wrist/bracer-armored-steel-blue.webp", + "effects": [ + { + "_id": "PIRBFfHOrmdREhnH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!2BNzuiU6wc3r9ByF.PIRBFfHOrmdREhnH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "vambrace" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342668, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2BNzuiU6wc3r9ByF" +} diff --git a/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json b/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json new file mode 100644 index 00000000..ca809a2f --- /dev/null +++ b/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json @@ -0,0 +1,79 @@ +{ + "_id": "9H3CBGOLUJ5JCHGJ", + "name": "Plattenbeinschienen", + "type": "armor", + "img": "icons/equipment/leg/pants-armored-tasset-steel.webp", + "effects": [ + { + "_id": "sIbiQW6tSjZyfCzk", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9H3CBGOLUJ5JCHGJ.sIbiQW6tSjZyfCzk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342768, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9H3CBGOLUJ5JCHGJ" +} diff --git a/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json b/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json new file mode 100644 index 00000000..192817de --- /dev/null +++ b/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json @@ -0,0 +1,87 @@ +{ + "_id": "KJsCiqvtPqjyu65Y", + "name": "Plattenbeinschienen +1", + "type": "armor", + "img": "icons/equipment/leg/cuisses-reticulated-steel.webp", + "effects": [ + { + "_id": "I32OnPe7rgPEHtEk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KJsCiqvtPqjyu65Y.I32OnPe7rgPEHtEk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342891, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KJsCiqvtPqjyu65Y" +} diff --git a/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json b/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json new file mode 100644 index 00000000..9cc1eba2 --- /dev/null +++ b/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json @@ -0,0 +1,87 @@ +{ + "_id": "FVnS20q8S7LrAdFj", + "name": "Plattenbeinschienen +2", + "type": "armor", + "img": "icons/equipment/leg/cuisses-reticulated-black.webp", + "effects": [ + { + "_id": "Zw9tFdr75QWyt8lO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FVnS20q8S7LrAdFj.Zw9tFdr75QWyt8lO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342821, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FVnS20q8S7LrAdFj" +} diff --git a/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json b/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json new file mode 100644 index 00000000..b92a21d3 --- /dev/null +++ b/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json @@ -0,0 +1,87 @@ +{ + "_id": "yDq5abf47mYIw3OG", + "name": "Plattenbeinschienen +3", + "type": "armor", + "img": "icons/equipment/leg/cuisses-plate-reticulated-steel-blue.webp", + "effects": [ + { + "_id": "dJcAdxKxsUIXzHCa", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yDq5abf47mYIw3OG.dJcAdxKxsUIXzHCa" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "plate", + "armorType": "greaves" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343577, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yDq5abf47mYIw3OG" +} diff --git a/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json b/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json new file mode 100644 index 00000000..382eb08b --- /dev/null +++ b/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json @@ -0,0 +1,35 @@ +{ + "_id": "ABxdFjBvQWavQsEk", + "name": "Plattenpanzer +1", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 4300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342783, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ABxdFjBvQWavQsEk" +} diff --git a/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json b/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json new file mode 100644 index 00000000..58dd4a28 --- /dev/null +++ b/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json @@ -0,0 +1,35 @@ +{ + "_id": "03wnfxowhzvSJPSj", + "name": "Plattenpanzer +2", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342624, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!03wnfxowhzvSJPSj" +} diff --git a/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json b/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json new file mode 100644 index 00000000..2498dd24 --- /dev/null +++ b/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json @@ -0,0 +1,35 @@ +{ + "_id": "5DY52CR03xXJHG6m", + "name": "Plattenpanzer +3", + "type": "armor", + "img": "icons/equipment/chest/breastplate-gorget-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342711, + "modifiedTime": 1740227862966, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5DY52CR03xXJHG6m" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json b/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json new file mode 100644 index 00000000..4f7e2d59 --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json @@ -0,0 +1,35 @@ +{ + "_id": "D4aCfCqniMSQ43hL", + "name": "Plattenpanzer (Für Reittiere)", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1

", + "quantity": 1, + "price": 150, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342805, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!D4aCfCqniMSQ43hL" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json b/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json new file mode 100644 index 00000000..98ec0ead --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json @@ -0,0 +1,87 @@ +{ + "_id": "99xGE9jkmXEXyf4U", + "name": "Plattenpanzer (Für Reittiere) +1", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "Jkhqmke6gzWU8vPZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!99xGE9jkmXEXyf4U.Jkhqmke6gzWU8vPZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 4400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342766, + "modifiedTime": 1740227862970, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!99xGE9jkmXEXyf4U" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json b/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json new file mode 100644 index 00000000..4a2861ae --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json @@ -0,0 +1,87 @@ +{ + "_id": "c6N4vskeYthnydo3", + "name": "Plattenpanzer (Für Reittiere) +2", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "n0pBAhNqTJbvqDWx", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!c6N4vskeYthnydo3.n0pBAhNqTJbvqDWx" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343105, + "modifiedTime": 1740227863007, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c6N4vskeYthnydo3" +} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json b/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json new file mode 100644 index 00000000..cb35f673 --- /dev/null +++ b/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json @@ -0,0 +1,87 @@ +{ + "_id": "TBrsx86DgKfq9Qat", + "name": "Plattenpanzer (Für Reittiere) +3", + "type": "armor", + "img": "icons/commodities/metal/mail-plate-steel.webp", + "effects": [ + { + "_id": "ioazIqWWKawYuPBQ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TBrsx86DgKfq9Qat.ioazIqWWKawYuPBQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 6400, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342994, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TBrsx86DgKfq9Qat" +} diff --git a/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json b/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json new file mode 100644 index 00000000..c8b8d1b2 --- /dev/null +++ b/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json @@ -0,0 +1,87 @@ +{ + "_id": "t13RJoXrsS0HAyIQ", + "name": "Plattenpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-steel-grey.webp", + "effects": [ + { + "_id": "pAxAXam5JBN6Acz9", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!t13RJoXrsS0HAyIQ.pAxAXam5JBN6Acz9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1 m

", + "quantity": 1, + "price": 50, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343507, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!t13RJoXrsS0HAyIQ" +} diff --git a/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json b/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json new file mode 100644 index 00000000..fb89c396 --- /dev/null +++ b/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json @@ -0,0 +1,79 @@ +{ + "_id": "55AkLjiaIn0SWO9k", + "name": "Rüstung des Kriegers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-collared-steel.webp", + "effects": [ + { + "_id": "TZoEpatdi8z1nreX", + "flags": {}, + "changes": [ + { + "key": "system.attributes.body.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Körper +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!55AkLjiaIn0SWO9k.TZoEpatdi8z1nreX" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese aufwendig verzierte Plattenrüstung +2 gewährt ihrem Träger +1 auf Körper.

", + "quantity": 1, + "price": 7300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342708, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!55AkLjiaIn0SWO9k" +} diff --git a/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json b/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json new file mode 100644 index 00000000..ead087af --- /dev/null +++ b/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json @@ -0,0 +1,79 @@ +{ + "_id": "1uYooTtDWgzB9FI9", + "name": "Rüstung des Löwen", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-gold.webp", + "effects": [ + { + "_id": "iIT1kOsyMJn0mIte", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "1.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen +1,5 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1uYooTtDWgzB9FI9.iIT1kOsyMJn0mIte" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Plattenrüstung +2 mit verzierten Löwenköpfen, die Laufen +1,5 m gewährt.

", + "quantity": 1, + "price": 6800, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342658, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1uYooTtDWgzB9FI9" +} diff --git a/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json b/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json new file mode 100644 index 00000000..2b7a5ec4 --- /dev/null +++ b/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json @@ -0,0 +1,130 @@ +{ + "_id": "tQ1LUX7in4xuuR12", + "name": "Rüstung des Schützen", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "C7jqj8julpambLpm", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tQ1LUX7in4xuuR12.C7jqj8julpambLpm" + }, + { + "_id": "fwNP4w1u7JP3OFEb", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Schießen +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tQ1LUX7in4xuuR12.fwNP4w1u7JP3OFEb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit dunkelgrünen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +3 auf Schießen.

", + "quantity": 1, + "price": 4760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343512, + "modifiedTime": 1740227863026, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tQ1LUX7in4xuuR12" +} diff --git a/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json b/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json new file mode 100644 index 00000000..d6d48e37 --- /dev/null +++ b/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json @@ -0,0 +1,79 @@ +{ + "_id": "Akhijp2Wayupy1qw", + "name": "Rüstung des Spähers", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "1swDTN9Kj7othjdB", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mobility.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Agilität +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Akhijp2Wayupy1qw.1swDTN9Kj7othjdB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit braunen Lederpolstern verstärkte Kettenrüstung +1 gewährt ihrem Träger +1 auf Agilität.

", + "quantity": 1, + "price": 5260, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342785, + "modifiedTime": 1740227862973, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Akhijp2Wayupy1qw" +} diff --git a/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json b/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json new file mode 100644 index 00000000..23f60f5e --- /dev/null +++ b/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json @@ -0,0 +1,31 @@ +{ + "_id": "8CYWepouh43ffkZ0", + "name": "Rauchkraut (5 Pfeifenköpfe)", + "type": "loot", + "img": "icons/commodities/flowers/flower-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342761, + "modifiedTime": 1740227862969, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8CYWepouh43ffkZ0" +} diff --git a/packs/items/Robe_WP62N2sjGz3eIN18.json b/packs/items/Robe_WP62N2sjGz3eIN18.json new file mode 100644 index 00000000..d4a8d77e --- /dev/null +++ b/packs/items/Robe_WP62N2sjGz3eIN18.json @@ -0,0 +1,35 @@ +{ + "_id": "WP62N2sjGz3eIN18", + "name": "Robe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343055, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WP62N2sjGz3eIN18" +} diff --git a/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json b/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json new file mode 100644 index 00000000..edd73f16 --- /dev/null +++ b/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json @@ -0,0 +1,35 @@ +{ + "_id": "FFCSMuHlDKiT0MxR", + "name": "Robe +1", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342816, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FFCSMuHlDKiT0MxR" +} diff --git a/packs/items/Robe__2_NSg4SdEHDuCfwXji.json b/packs/items/Robe__2_NSg4SdEHDuCfwXji.json new file mode 100644 index 00000000..bc7e1d3e --- /dev/null +++ b/packs/items/Robe__2_NSg4SdEHDuCfwXji.json @@ -0,0 +1,87 @@ +{ + "_id": "NSg4SdEHDuCfwXji", + "name": "Robe +2", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-red.webp", + "effects": [ + { + "_id": "0GJ943ZfeGKcsb2l", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NSg4SdEHDuCfwXji.0GJ943ZfeGKcsb2l" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342915, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NSg4SdEHDuCfwXji" +} diff --git a/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json b/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json new file mode 100644 index 00000000..c1308b31 --- /dev/null +++ b/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json @@ -0,0 +1,35 @@ +{ + "_id": "cFMcSg7PFIcQvf0B", + "name": "Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343111, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cFMcSg7PFIcQvf0B" +} diff --git a/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json b/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json new file mode 100644 index 00000000..0e8ecec4 --- /dev/null +++ b/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json @@ -0,0 +1,79 @@ +{ + "_id": "KGk7UFwLwrsdPuQe", + "name": "Robe der Macht", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-pink.webp", + "effects": [ + { + "_id": "tGAxxMZu2cj0Pzs2", + "flags": {}, + "changes": [ + { + "key": "system.attributes.mind.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Geist +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KGk7UFwLwrsdPuQe.tGAxxMZu2cj0Pzs2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese violette Robe +3 verleiht ihrem Träger +1 auf Geist.

", + "quantity": 1, + "price": 5251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342888, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KGk7UFwLwrsdPuQe" +} diff --git a/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json b/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json new file mode 100644 index 00000000..a3316320 --- /dev/null +++ b/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json @@ -0,0 +1,79 @@ +{ + "_id": "A9QnXaonGzuUBktX", + "name": "Robe des Denkers", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [ + { + "_id": "Fyl7VFU1QhIbh2ul", + "flags": {}, + "changes": [ + { + "key": "system.traits.intellect.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "+1 Verstand (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!A9QnXaonGzuUBktX.Fyl7VFU1QhIbh2ul" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese graue Robe +2 verleiht +1 auf Verstand.

", + "quantity": 1, + "price": 3251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342781, + "modifiedTime": 1740227862972, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A9QnXaonGzuUBktX" +} diff --git a/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json b/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json new file mode 100644 index 00000000..b59be378 --- /dev/null +++ b/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json @@ -0,0 +1,87 @@ +{ + "_id": "kVRybb0knZkoJLlj", + "name": "Robe des Heilers", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-white.webp", + "effects": [ + { + "_id": "GgAFMmXGb1B5KIda", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heilzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!kVRybb0knZkoJLlj.GgAFMmXGb1B5KIda" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine weiße Robe, die ihrem Träger +1 auf Heilzauber gewährt.

", + "quantity": 1, + "price": 751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343318, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kVRybb0knZkoJLlj" +} diff --git a/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json b/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json new file mode 100644 index 00000000..17e2d152 --- /dev/null +++ b/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json @@ -0,0 +1,31 @@ +{ + "_id": "HzqK6sd3ovgEZdWz", + "name": "Rucksack", + "type": "loot", + "img": "icons/containers/bags/pack-leather-white-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342867, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HzqK6sd3ovgEZdWz" +} diff --git a/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json b/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json new file mode 100644 index 00000000..4aab6bd5 --- /dev/null +++ b/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json @@ -0,0 +1,31 @@ +{ + "_id": "an96cOOwr3YujKpe", + "name": "Ruderboot (2 Mann)", + "type": "loot", + "img": "icons/tools/nautical/steering-wheel.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 25, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343095, + "modifiedTime": 1740227863006, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!an96cOOwr3YujKpe" +} diff --git a/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json b/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json new file mode 100644 index 00000000..fd230b8a --- /dev/null +++ b/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json @@ -0,0 +1,138 @@ +{ + "_id": "gK76RPRhQF7T4AQC", + "name": "Runenbestickte Feurrobe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-red.webp", + "effects": [ + { + "_id": "Qpy3XcHOokbU7ZaS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gK76RPRhQF7T4AQC.Qpy3XcHOokbU7ZaS" + }, + { + "_id": "IbOD7GxGN30V1AYL", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Feuermagier", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feuermagier +V", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gK76RPRhQF7T4AQC.IbOD7GxGN30V1AYL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine feuerrote Robe +3 mit aufgestickten Flammenrunen und Feuermagier +V.

", + "quantity": 1, + "price": 4501, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343207, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gK76RPRhQF7T4AQC" +} diff --git a/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json b/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json new file mode 100644 index 00000000..a655111d --- /dev/null +++ b/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json @@ -0,0 +1,87 @@ +{ + "_id": "sUHJSIG8aTs0do67", + "name": "Runenbestickte Robe +1", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-blue.webp", + "effects": [ + { + "_id": "6NLQSkPxsA3H8Gc8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sUHJSIG8aTs0do67.6NLQSkPxsA3H8Gc8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 1258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343486, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sUHJSIG8aTs0do67" +} diff --git a/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json b/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json new file mode 100644 index 00000000..1dc025c8 --- /dev/null +++ b/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json @@ -0,0 +1,87 @@ +{ + "_id": "j3wcDmBNiDx7sK0n", + "name": "Runenbestickte Robe +2", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-blue.webp", + "effects": [ + { + "_id": "a2GXKNKHJWdyKb7h", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!j3wcDmBNiDx7sK0n.a2GXKNKHJWdyKb7h" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 2258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343301, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!j3wcDmBNiDx7sK0n" +} diff --git a/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json b/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json new file mode 100644 index 00000000..8664cf79 --- /dev/null +++ b/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json @@ -0,0 +1,87 @@ +{ + "_id": "U8iwfv7oJNl8CsKK", + "name": "Runenbestickte Robe +3", + "type": "armor", + "img": "icons/equipment/chest/robe-collared-pink.webp", + "effects": [ + { + "_id": "CFyX5reV96JVL2Cg", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!U8iwfv7oJNl8CsKK.CFyX5reV96JVL2Cg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 3258, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343029, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!U8iwfv7oJNl8CsKK" +} diff --git a/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json b/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json new file mode 100644 index 00000000..37704a4f --- /dev/null +++ b/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json @@ -0,0 +1,79 @@ +{ + "_id": "w1bZ2431gdOQumWK", + "name": "Runenbestickte Robe", + "type": "armor", + "img": "icons/equipment/chest/coat-leather-blue.webp", + "effects": [ + { + "_id": "vgJWV95OeyzrjyFw", + "flags": {}, + "changes": [ + { + "key": "system.traits.aura.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Aura +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!w1bZ2431gdOQumWK.vgJWV95OeyzrjyFw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aura +1

", + "quantity": 1, + "price": 8, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343553, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w1bZ2431gdOQumWK" +} diff --git a/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json b/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json new file mode 100644 index 00000000..54223706 --- /dev/null +++ b/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json @@ -0,0 +1,79 @@ +{ + "_id": "FVrbrxqVURPP3Yee", + "name": "Söldnertreu", + "type": "armor", + "img": "icons/equipment/chest/breastplate-scale-grey.webp", + "effects": [ + { + "_id": "qTM84JzHmlfYXGCb", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Schlagen +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!FVrbrxqVURPP3Yee.qTM84JzHmlfYXGCb" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese mit blauen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +1 auf Schlagen.

", + "quantity": 1, + "price": 3760, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2, + "armorMaterialType": "chain", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342825, + "modifiedTime": 1740227862979, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FVrbrxqVURPP3Yee" +} diff --git a/packs/items/Sack_RD0HKxmbhfluw73R.json b/packs/items/Sack_RD0HKxmbhfluw73R.json new file mode 100644 index 00000000..f5854278 --- /dev/null +++ b/packs/items/Sack_RD0HKxmbhfluw73R.json @@ -0,0 +1,31 @@ +{ + "_id": "RD0HKxmbhfluw73R", + "name": "Sack", + "type": "loot", + "img": "icons/containers/bags/sack-simple-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.8, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342958, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RD0HKxmbhfluw73R" +} diff --git a/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json b/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json new file mode 100644 index 00000000..acd46e4b --- /dev/null +++ b/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json @@ -0,0 +1,31 @@ +{ + "_id": "R2LeIutCjDzwGwUx", + "name": "Sanduhr", + "type": "loot", + "img": "icons/tools/navigation/hourglass-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342957, + "modifiedTime": 1740227862994, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R2LeIutCjDzwGwUx" +} diff --git a/packs/items/Sattel_nslQfc441x1GG0SL.json b/packs/items/Sattel_nslQfc441x1GG0SL.json new file mode 100644 index 00000000..0479dfa0 --- /dev/null +++ b/packs/items/Sattel_nslQfc441x1GG0SL.json @@ -0,0 +1,32 @@ +{ + "_id": "nslQfc441x1GG0SL", + "name": "Sattel", + "type": "equipment", + "img": "icons/commodities/leather/leather-scrap-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343364, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nslQfc441x1GG0SL" +} diff --git a/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json b/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json new file mode 100644 index 00000000..e2c558d5 --- /dev/null +++ b/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json @@ -0,0 +1,31 @@ +{ + "_id": "UpkQTtuxNS1eOIRu", + "name": "Satteltasche", + "type": "loot", + "img": "icons/containers/bags/pouch-simple-leather-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343040, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UpkQTtuxNS1eOIRu" +} diff --git a/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json b/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json new file mode 100644 index 00000000..8e53ee0e --- /dev/null +++ b/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json @@ -0,0 +1,35 @@ +{ + "_id": "0UDiL2xAlGCEeckL", + "name": "Schlachtbeil", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 20, + "availability": "city", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342632, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0UDiL2xAlGCEeckL" +} diff --git a/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json b/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json new file mode 100644 index 00000000..1aeb02f2 --- /dev/null +++ b/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json @@ -0,0 +1,87 @@ +{ + "_id": "N3RcggWJuKGtKZyP", + "name": "Schlachtbeil +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-blackened.webp", + "effects": [ + { + "_id": "aHr33jsfG78BJ7m2", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!N3RcggWJuKGtKZyP.aHr33jsfG78BJ7m2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 2770, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342908, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!N3RcggWJuKGtKZyP" +} diff --git a/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json b/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json new file mode 100644 index 00000000..bcb9c419 --- /dev/null +++ b/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json @@ -0,0 +1,138 @@ +{ + "_id": "Qncx0jbmnD2KJAfG", + "name": "Schlachtbeil +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-engraved-purple.webp", + "effects": [ + { + "_id": "atmWPMxgNoeole7n", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-6", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -6", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Qncx0jbmnD2KJAfG.atmWPMxgNoeole7n" + }, + { + "_id": "Qdjy0578meoXi49p", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Qncx0jbmnD2KJAfG.Qdjy0578meoXi49p" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3270, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342949, + "modifiedTime": 1740227862993, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Qncx0jbmnD2KJAfG" +} diff --git a/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json b/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json new file mode 100644 index 00000000..9afeadfa --- /dev/null +++ b/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json @@ -0,0 +1,87 @@ +{ + "_id": "Nb65CmtFiiWPpnNZ", + "name": "Schlachtbeil +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-battle-heavy-black.webp", + "effects": [ + { + "_id": "DJQ1hHJRJuraxIym", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Nb65CmtFiiWPpnNZ.DJQ1hHJRJuraxIym" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", + "quantity": 1, + "price": 3770, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 7, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342917, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nb65CmtFiiWPpnNZ" +} diff --git a/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json b/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json new file mode 100644 index 00000000..873cdb33 --- /dev/null +++ b/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json @@ -0,0 +1,87 @@ +{ + "_id": "hBemmfRcQLFU7PSt", + "name": "Schlachtgeißel +1", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "oOQJt7Ub0PGGjdzW", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!hBemmfRcQLFU7PSt.oOQJt7Ub0PGGjdzW" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 2266, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343226, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hBemmfRcQLFU7PSt" +} diff --git a/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json b/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json new file mode 100644 index 00000000..9e004d86 --- /dev/null +++ b/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json @@ -0,0 +1,87 @@ +{ + "_id": "YSl6qdVC6fDYVkFQ", + "name": "Schlachtgeißel +2", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "OF7IAa9tUBoz23TD", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!YSl6qdVC6fDYVkFQ.OF7IAa9tUBoz23TD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 2766, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -6 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343079, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YSl6qdVC6fDYVkFQ" +} diff --git a/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json b/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json new file mode 100644 index 00000000..67d8f2d0 --- /dev/null +++ b/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json @@ -0,0 +1,87 @@ +{ + "_id": "eqGo6VKETI1UTxP1", + "name": "Schlachtgeißel +3", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "uhpIAR3T0P3bJw1C", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eqGo6VKETI1UTxP1.uhpIAR3T0P3bJw1C" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 3266, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343181, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eqGo6VKETI1UTxP1" +} diff --git a/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json b/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json new file mode 100644 index 00000000..635caddc --- /dev/null +++ b/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json @@ -0,0 +1,87 @@ +{ + "_id": "yfqzgTskyIgWZq8A", + "name": "Schlachtgeißel", + "type": "weapon", + "img": "icons/weapons/maces/flail-triple-grey.webp", + "effects": [ + { + "_id": "BdejYg7Bq6tM2ROu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yfqzgTskyIgWZq8A.BdejYg7Bq6tM2ROu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", + "quantity": 1, + "price": 16, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343580, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yfqzgTskyIgWZq8A" +} diff --git a/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json b/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json new file mode 100644 index 00000000..295a0ce6 --- /dev/null +++ b/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json @@ -0,0 +1,31 @@ +{ + "_id": "UBH03jh91dP6KMtL", + "name": "Schlafstaub", + "type": "loot", + "img": "icons/tools/laboratory/bowl-powder-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wirkt auf ein beworfenes Ziel den Zauber @Compendium[ds4.spells.CrZ8L7oaWvPjLou0]{Einschläfern}.

", + "quantity": 1, + "price": 151, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343033, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UBH03jh91dP6KMtL" +} diff --git a/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json b/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json new file mode 100644 index 00000000..4146cc0b --- /dev/null +++ b/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json @@ -0,0 +1,87 @@ +{ + "_id": "fziU7tEIQPowqBJj", + "name": "Schlagring +1", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-blue.webp", + "effects": [ + { + "_id": "ph5sqT08zd8lSi7s", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!fziU7tEIQPowqBJj.ph5sqT08zd8lSi7s" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343205, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fziU7tEIQPowqBJj" +} diff --git a/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json b/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json new file mode 100644 index 00000000..26be63c2 --- /dev/null +++ b/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json @@ -0,0 +1,87 @@ +{ + "_id": "830D1zHS3v0Gx4nB", + "name": "Schlagring +2", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-stone.webp", + "effects": [ + { + "_id": "iQZLQlcUQgnYg0Hs", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!830D1zHS3v0Gx4nB.iQZLQlcUQgnYg0Hs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342750, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!830D1zHS3v0Gx4nB" +} diff --git a/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json b/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json new file mode 100644 index 00000000..0fc74214 --- /dev/null +++ b/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json @@ -0,0 +1,87 @@ +{ + "_id": "CHRqMQxkgz3jad9J", + "name": "Schlagring +3", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-brass.webp", + "effects": [ + { + "_id": "K3m0tLhoW9vT6e19", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!CHRqMQxkgz3jad9J.K3m0tLhoW9vT6e19" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342800, + "modifiedTime": 1740227862975, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CHRqMQxkgz3jad9J" +} diff --git a/packs/items/Schlagring_aJ9xkECmqeBUhING.json b/packs/items/Schlagring_aJ9xkECmqeBUhING.json new file mode 100644 index 00000000..3662f2fd --- /dev/null +++ b/packs/items/Schlagring_aJ9xkECmqeBUhING.json @@ -0,0 +1,35 @@ +{ + "_id": "aJ9xkECmqeBUhING", + "name": "Schlagring", + "type": "weapon", + "img": "icons/weapons/fist/fist-knuckles-spiked-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", + "quantity": 1, + "price": 1, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343087, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aJ9xkECmqeBUhING" +} diff --git a/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json b/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json new file mode 100644 index 00000000..ac74c0ee --- /dev/null +++ b/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json @@ -0,0 +1,35 @@ +{ + "_id": "ETpbN0Q39eKPmWK0", + "name": "Schleuder", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342812, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ETpbN0Q39eKPmWK0" +} diff --git a/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json b/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json new file mode 100644 index 00000000..b0e84519 --- /dev/null +++ b/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json @@ -0,0 +1,87 @@ +{ + "_id": "GEBWsHBuyh9KbIbb", + "name": "Schleuder +1", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "YCgrTPMCggWZOFdJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GEBWsHBuyh9KbIbb.YCgrTPMCggWZOFdJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342850, + "modifiedTime": 1740227862980, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GEBWsHBuyh9KbIbb" +} diff --git a/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json b/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json new file mode 100644 index 00000000..c5a5237b --- /dev/null +++ b/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json @@ -0,0 +1,87 @@ +{ + "_id": "1IWsAaMSnz1Q9ZWd", + "name": "Schleuder +2", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "aKfE4S2oocgJMro8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1IWsAaMSnz1Q9ZWd.aKfE4S2oocgJMro8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1250.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342651, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1IWsAaMSnz1Q9ZWd" +} diff --git a/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json b/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json new file mode 100644 index 00000000..9b32711a --- /dev/null +++ b/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json @@ -0,0 +1,87 @@ +{ + "_id": "S4pc70BxmRU0DCsW", + "name": "Schleuder +3", + "type": "weapon", + "img": "icons/weapons/slings/slingshot-wood.webp", + "effects": [ + { + "_id": "kM7ZknhuQS8uIJbu", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S4pc70BxmRU0DCsW.kM7ZknhuQS8uIJbu" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342981, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S4pc70BxmRU0DCsW" +} diff --git a/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json b/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json new file mode 100644 index 00000000..69ec3d15 --- /dev/null +++ b/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json @@ -0,0 +1,31 @@ +{ + "_id": "3pdw4CN8Wc9oCKX5", + "name": "Schloss: Einfach (SW: 0)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342700, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3pdw4CN8Wc9oCKX5" +} diff --git a/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json b/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json new file mode 100644 index 00000000..753f9a85 --- /dev/null +++ b/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json @@ -0,0 +1,31 @@ +{ + "_id": "zAMFB4HHHUQp4RFa", + "name": "Schloss: Gut (SW: 2)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343593, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zAMFB4HHHUQp4RFa" +} diff --git a/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json b/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json new file mode 100644 index 00000000..65f80e36 --- /dev/null +++ b/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json @@ -0,0 +1,31 @@ +{ + "_id": "Sks4O3NpwOWQIrIa", + "name": "Schloss: Meisterartbeit (SW: 8)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 50, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342990, + "modifiedTime": 1740227862999, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sks4O3NpwOWQIrIa" +} diff --git a/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json b/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json new file mode 100644 index 00000000..ddee2f90 --- /dev/null +++ b/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json @@ -0,0 +1,31 @@ +{ + "_id": "dW8OETKY21O3GNHf", + "name": "Schloss: Solide (SW: 4)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 10, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343141, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dW8OETKY21O3GNHf" +} diff --git a/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json b/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json new file mode 100644 index 00000000..0f04a3cf --- /dev/null +++ b/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json @@ -0,0 +1,31 @@ +{ + "_id": "tPlXSWQ4mP0dqnOa", + "name": "Schloss: Zwergenarbeit (SW: 12)", + "type": "loot", + "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 250, + "availability": "city", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343511, + "modifiedTime": 1740227863025, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tPlXSWQ4mP0dqnOa" +} diff --git a/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json b/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json new file mode 100644 index 00000000..dcd84014 --- /dev/null +++ b/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json @@ -0,0 +1,31 @@ +{ + "_id": "Tlfjrxlm9NpmVR0L", + "name": "Schnelligkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-fancy-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Für W20 Runden erhöht sich der Laufen- Wert des Trinkenden um 100%.

", + "quantity": 1, + "price": 200, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343014, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Tlfjrxlm9NpmVR0L" +} diff --git a/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json b/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json new file mode 100644 index 00000000..e231c045 --- /dev/null +++ b/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json @@ -0,0 +1,76 @@ +{ + "_id": "kGTB9f2zPrmedHq4", + "name": "Schutzring +1", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-lines-bronze.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!kGTB9f2zPrmedHq4.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 1, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343316, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kGTB9f2zPrmedHq4" +} diff --git a/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json b/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json new file mode 100644 index 00000000..0fae28f7 --- /dev/null +++ b/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json @@ -0,0 +1,76 @@ +{ + "_id": "cg1y2GTJRGhE9Fpy", + "name": "Schutzring +2", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-bronze.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cg1y2GTJRGhE9Fpy.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 2, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343113, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cg1y2GTJRGhE9Fpy" +} diff --git a/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json b/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json new file mode 100644 index 00000000..4e9591a1 --- /dev/null +++ b/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json @@ -0,0 +1,76 @@ +{ + "_id": "qlBIUI00RTYZzclX", + "name": "Schutzring +3", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-engraved-scrolls-gold.webp", + "effects": [ + { + "_id": "yH3Ujo3jKNCYI4n9", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qlBIUI00RTYZzclX.yH3Ujo3jKNCYI4n9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Abwehr um 3, ohne dabei Panzerungsmalus zu verursachen.

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343471, + "modifiedTime": 1740227863023, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qlBIUI00RTYZzclX" +} diff --git a/packs/items/Schutztrank_XiW3k793840i0rdo.json b/packs/items/Schutztrank_XiW3k793840i0rdo.json new file mode 100644 index 00000000..3c5da18d --- /dev/null +++ b/packs/items/Schutztrank_XiW3k793840i0rdo.json @@ -0,0 +1,31 @@ +{ + "_id": "XiW3k793840i0rdo", + "name": "Schutztrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-pear-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht für W20 Runden die Abwehr um +2.

", + "quantity": 1, + "price": 50, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343069, + "modifiedTime": 1740227863004, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XiW3k793840i0rdo" +} diff --git a/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json b/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json new file mode 100644 index 00000000..9d5183a4 --- /dev/null +++ b/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json @@ -0,0 +1,32 @@ +{ + "_id": "ElUWNqUWZB4dH3QS", + "name": "Schwebenamulett", + "type": "equipment", + "img": "icons/equipment/neck/amulet-moth-gold-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber @Compendium[ds4.spells.SPnYNGggFb8XRICE]{Schweben} wurde in dieses Amulett gebettet.

", + "quantity": 1, + "price": 1515, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342813, + "modifiedTime": 1740227862978, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ElUWNqUWZB4dH3QS" +} diff --git a/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json b/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json new file mode 100644 index 00000000..911fe32d --- /dev/null +++ b/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json @@ -0,0 +1,31 @@ +{ + "_id": "OZU7ietSpnivKPVt", + "name": "Schwebentrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist grünliche Getränk wirkt den Zauber Schweben (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342923, + "modifiedTime": 1740227862988, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OZU7ietSpnivKPVt" +} diff --git a/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json b/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json new file mode 100644 index 00000000..7fcaebf1 --- /dev/null +++ b/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json @@ -0,0 +1,35 @@ +{ + "_id": "GJdez2VgLxwzlZAQ", + "name": "Schwere Armbrust", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-heavy-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 15, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342858, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GJdez2VgLxwzlZAQ" +} diff --git a/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json b/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json new file mode 100644 index 00000000..b1107049 --- /dev/null +++ b/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json @@ -0,0 +1,130 @@ +{ + "_id": "S0EV25lf5TbN6COJ", + "name": "Schwere Armbrust +1", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-loaded-black.webp", + "effects": [ + { + "_id": "N4vxVFNLW9Q9QsIp", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "value": "-4", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S0EV25lf5TbN6COJ.N4vxVFNLW9Q9QsIp" + }, + { + "_id": "ZBJldrSO6rRHmgnI", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!S0EV25lf5TbN6COJ.ZBJldrSO6rRHmgnI" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342977, + "modifiedTime": 1740227862997, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S0EV25lf5TbN6COJ" +} diff --git a/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json b/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json new file mode 100644 index 00000000..1c7ad6bb --- /dev/null +++ b/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json @@ -0,0 +1,87 @@ +{ + "_id": "NMmZ3Uu9uwAHc5IP", + "name": "Schwere Armbrust +2", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-blue.webp", + "effects": [ + { + "_id": "sOBnfFviucXKykt1", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NMmZ3Uu9uwAHc5IP.sOBnfFviucXKykt1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2765, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 5, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342912, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NMmZ3Uu9uwAHc5IP" +} diff --git a/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json b/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json new file mode 100644 index 00000000..bbfdb98f --- /dev/null +++ b/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json @@ -0,0 +1,87 @@ +{ + "_id": "RWSRxi9np1UrEi7N", + "name": "Schwere Armbrust +3", + "type": "weapon", + "img": "icons/weapons/crossbows/crossbow-ornamental-black.webp", + "effects": [ + { + "_id": "SlJV88ZHTV0VORzk", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RWSRxi9np1UrEi7N.SlJV88ZHTV0VORzk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 6, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342966, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RWSRxi9np1UrEi7N" +} diff --git a/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json b/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json new file mode 100644 index 00000000..31b417a8 --- /dev/null +++ b/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json @@ -0,0 +1,31 @@ +{ + "_id": "ozPRhUPx9Y9u3GNE", + "name": "Seife (1 Stück)", + "type": "loot", + "img": "icons/sundries/survival/soap.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343446, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ozPRhUPx9Y9u3GNE" +} diff --git a/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json b/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json new file mode 100644 index 00000000..6a167041 --- /dev/null +++ b/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json @@ -0,0 +1,31 @@ +{ + "_id": "aUKnYWOr7Fjy9sVX", + "name": "Seil (10m)", + "type": "loot", + "img": "icons/sundries/survival/rope-wrapped-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343090, + "modifiedTime": 1740227863005, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aUKnYWOr7Fjy9sVX" +} diff --git a/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json b/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json new file mode 100644 index 00000000..3f936ae0 --- /dev/null +++ b/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json @@ -0,0 +1,87 @@ +{ + "_id": "K4fd3AlpMoK1EZeg", + "name": "Skrupelloser Bogen", + "type": "weapon", + "img": "icons/weapons/bows/shortbow-recurve-red.webp", + "effects": [ + { + "_id": "8iny3Tt6i6g5EcYh", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!K4fd3AlpMoK1EZeg.8iny3Tt6i6g5EcYh" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Kurzbogen +1 mit @Compendium[ds4.spells.dt2E4g7iwVqTSlMl]{Kleiner Terror}, der Feinde angeblich immer in den Rücken trifft.

\n

Zweihändig, Initiative +1

", + "quantity": 1, + "price": 2006, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "ranged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342885, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!K4fd3AlpMoK1EZeg" +} diff --git a/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json b/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json new file mode 100644 index 00000000..396962b5 --- /dev/null +++ b/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json @@ -0,0 +1,31 @@ +{ + "_id": "9xQRXWUYj3giHVRC", + "name": "Smaragd-Schlüssel", + "type": "loot", + "img": "icons/sundries/misc/key-jeweled-gold-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal alle 24h kann man damit den Zauber @Compendium[ds4.spells.ip0DVeb1YeNrEeUu]{Öffnen} auf ein Schloss wirken.

", + "quantity": 1, + "price": null, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342775, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9xQRXWUYj3giHVRC" +} diff --git a/packs/items/Speer__1_jRzgvvygxk5IjXYB.json b/packs/items/Speer__1_jRzgvvygxk5IjXYB.json new file mode 100644 index 00000000..9c84bf02 --- /dev/null +++ b/packs/items/Speer__1_jRzgvvygxk5IjXYB.json @@ -0,0 +1,87 @@ +{ + "_id": "jRzgvvygxk5IjXYB", + "name": "Speer +1", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-red.webp", + "effects": [ + { + "_id": "r0XGSAypTjvBmHHC", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!jRzgvvygxk5IjXYB.r0XGSAypTjvBmHHC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343306, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jRzgvvygxk5IjXYB" +} diff --git a/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json b/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json new file mode 100644 index 00000000..31786b75 --- /dev/null +++ b/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json @@ -0,0 +1,87 @@ +{ + "_id": "IfvOtBwOEYLPPvJK", + "name": "Speer +2", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-double-engraved.webp", + "effects": [ + { + "_id": "Kk9b3biK0mISYf75", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IfvOtBwOEYLPPvJK.Kk9b3biK0mISYf75" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342870, + "modifiedTime": 1740227862983, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IfvOtBwOEYLPPvJK" +} diff --git a/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json b/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json new file mode 100644 index 00000000..50df92f9 --- /dev/null +++ b/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json @@ -0,0 +1,87 @@ +{ + "_id": "HNHMmE4wNi0iXIjO", + "name": "Speer +3", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-double-jeweled.webp", + "effects": [ + { + "_id": "YUzHa2B8n4yYyWyY", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!HNHMmE4wNi0iXIjO.YUzHa2B8n4yYyWyY" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 2251, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342863, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HNHMmE4wNi0iXIjO" +} diff --git a/packs/items/Speer_oWvJfxEBr83QxO9Q.json b/packs/items/Speer_oWvJfxEBr83QxO9Q.json new file mode 100644 index 00000000..23866e54 --- /dev/null +++ b/packs/items/Speer_oWvJfxEBr83QxO9Q.json @@ -0,0 +1,35 @@ +{ + "_id": "oWvJfxEBr83QxO9Q", + "name": "Speer", + "type": "weapon", + "img": "icons/weapons/polearms/spear-hooked-simple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zerbricht bei Schießen-Patzer

", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343397, + "modifiedTime": 1740227863021, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oWvJfxEBr83QxO9Q" +} diff --git a/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json b/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json new file mode 100644 index 00000000..1d3a68ef --- /dev/null +++ b/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json @@ -0,0 +1,32 @@ +{ + "_id": "oJbpYZlvfJ6kpudj", + "name": "Spruchspeicherring", + "type": "equipment", + "img": "icons/equipment/finger/ring-cabochon-engraved-gold-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Tag kann der Träger des Ringes zu einem vorher festgelegten Zauber aktionsfrei wechseln, ohne dafür würfeln zu müssen, da in den Ring @Compendium[ds4.spells.DNplbUwfxszg5UbZ]{Wechselzauber} eingebettet wurde.

", + "quantity": 1, + "price": 4992, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343371, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oJbpYZlvfJ6kpudj" +} diff --git a/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json b/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json new file mode 100644 index 00000000..d4e3554f --- /dev/null +++ b/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json @@ -0,0 +1,31 @@ +{ + "_id": "JlcYB53S1wQRfmUG", + "name": "Stärketrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-stopper-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser nach Schweiß riechende Trank verdoppelt ST für ST in Runden.

", + "quantity": 1, + "price": 150, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342884, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JlcYB53S1wQRfmUG" +} diff --git a/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json b/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json new file mode 100644 index 00000000..f2393032 --- /dev/null +++ b/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json @@ -0,0 +1,130 @@ +{ + "_id": "uafOWinH9nnRO3lr", + "name": "Stab des Magus", + "type": "weapon", + "img": "icons/weapons/staves/staff-ornate-purple.webp", + "effects": [ + { + "_id": "ve7iQmkxC6l5WmTE", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uafOWinH9nnRO3lr.ve7iQmkxC6l5WmTE" + }, + { + "_id": "XD3tGbvi1S03diuz", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.targetedSpellcasting.total", + "value": "3", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Zielzaubern +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!uafOWinH9nnRO3lr.XD3tGbvi1S03diuz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Kampfstab +1 mit Zielzaubern +3 (insgesamt also mit dem normalen Bonus Zielzaubern +4).

\n

Zweihändig, Zielzaubern +1

", + "quantity": 1, + "price": 2750.5, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343535, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uafOWinH9nnRO3lr" +} diff --git a/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json b/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json new file mode 100644 index 00000000..f1f66ef0 --- /dev/null +++ b/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json @@ -0,0 +1,35 @@ +{ + "_id": "PPNAghq5SEhO1zNM", + "name": "Stahlflamme", + "type": "weapon", + "img": "icons/weapons/swords/sword-guard-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Langschwert +1 mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kam schon in vielen Kriegen zum Einsatz.

", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342931, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PPNAghq5SEhO1zNM" +} diff --git a/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json b/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json new file mode 100644 index 00000000..1407482f --- /dev/null +++ b/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json @@ -0,0 +1,87 @@ +{ + "_id": "s1xaEPPKJGMImZ9m", + "name": "Streitaxt +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-chopping-black.webp", + "effects": [ + { + "_id": "fQgMSANHWdQrzmlJ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!s1xaEPPKJGMImZ9m.fQgMSANHWdQrzmlJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343477, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s1xaEPPKJGMImZ9m" +} diff --git a/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json b/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json new file mode 100644 index 00000000..7370a20d --- /dev/null +++ b/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json @@ -0,0 +1,87 @@ +{ + "_id": "Idj6BxduoI3v4u9A", + "name": "Streitaxt +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-black.webp", + "effects": [ + { + "_id": "iImvUwfo7IRqnmVv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Idj6BxduoI3v4u9A.iImvUwfo7IRqnmVv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 2757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342869, + "modifiedTime": 1740227862982, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Idj6BxduoI3v4u9A" +} diff --git a/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json b/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json new file mode 100644 index 00000000..8262e0a8 --- /dev/null +++ b/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json @@ -0,0 +1,87 @@ +{ + "_id": "0P2wJM5qG1VupfXq", + "name": "Streitaxt +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-blue.webp", + "effects": [ + { + "_id": "aNtjz1DteptmA3ce", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0P2wJM5qG1VupfXq.aNtjz1DteptmA3ce" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 3257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342630, + "modifiedTime": 1740227862960, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0P2wJM5qG1VupfXq" +} diff --git a/packs/items/Streitaxt_vqKLn65gjoced8jV.json b/packs/items/Streitaxt_vqKLn65gjoced8jV.json new file mode 100644 index 00000000..216734cd --- /dev/null +++ b/packs/items/Streitaxt_vqKLn65gjoced8jV.json @@ -0,0 +1,87 @@ +{ + "_id": "vqKLn65gjoced8jV", + "name": "Streitaxt", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-brown.webp", + "effects": [ + { + "_id": "DPS3CaNXapsBzzsj", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!vqKLn65gjoced8jV.DPS3CaNXapsBzzsj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -2

", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343551, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!vqKLn65gjoced8jV" +} diff --git a/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json b/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json new file mode 100644 index 00000000..31cc8afa --- /dev/null +++ b/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json @@ -0,0 +1,87 @@ +{ + "_id": "eMyZ5EJ9SsiXaeKK", + "name": "Streithammer +1", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-spiked-simple.webp", + "effects": [ + { + "_id": "bPdVsWIS1AC54ZA8", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eMyZ5EJ9SsiXaeKK.bPdVsWIS1AC54ZA8" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343161, + "modifiedTime": 1740227863013, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMyZ5EJ9SsiXaeKK" +} diff --git a/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json b/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json new file mode 100644 index 00000000..bbc7f41b --- /dev/null +++ b/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json @@ -0,0 +1,87 @@ +{ + "_id": "eMeS2JSyiRJ5xO48", + "name": "Streithammer +2", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-rounding.webp", + "effects": [ + { + "_id": "1I5R9xQlug0aSVTZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eMeS2JSyiRJ5xO48.1I5R9xQlug0aSVTZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 2756, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343156, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMeS2JSyiRJ5xO48" +} diff --git a/packs/items/Streithammer__3_iORLpplub64kuxb4.json b/packs/items/Streithammer__3_iORLpplub64kuxb4.json new file mode 100644 index 00000000..8e3b32da --- /dev/null +++ b/packs/items/Streithammer__3_iORLpplub64kuxb4.json @@ -0,0 +1,35 @@ +{ + "_id": "iORLpplub64kuxb4", + "name": "Streithammer +3", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-war-spiked.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343258, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iORLpplub64kuxb4" +} diff --git a/packs/items/Streithammer_fmFM71TpvBxYqmu2.json b/packs/items/Streithammer_fmFM71TpvBxYqmu2.json new file mode 100644 index 00000000..920010c7 --- /dev/null +++ b/packs/items/Streithammer_fmFM71TpvBxYqmu2.json @@ -0,0 +1,35 @@ +{ + "_id": "fmFM71TpvBxYqmu2", + "name": "Streithammer", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-simple-iron.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 6, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343198, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fmFM71TpvBxYqmu2" +} diff --git a/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json b/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json new file mode 100644 index 00000000..0a2fb5af --- /dev/null +++ b/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json @@ -0,0 +1,87 @@ +{ + "_id": "SIE4g3gjSkqVIT6W", + "name": "Streitkolben +1", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-wood-grey.webp", + "effects": [ + { + "_id": "Qg9niqX5oimvg2Fv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!SIE4g3gjSkqVIT6W.Qg9niqX5oimvg2Fv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342985, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SIE4g3gjSkqVIT6W" +} diff --git a/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json b/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json new file mode 100644 index 00000000..d1bd65b2 --- /dev/null +++ b/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json @@ -0,0 +1,87 @@ +{ + "_id": "Trl2ljtHi1kRYHTX", + "name": "Streitkolben +2", + "type": "weapon", + "img": "icons/weapons/maces/mace-studded-steel.webp", + "effects": [ + { + "_id": "PeyncDD5OoPJkkTO", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Trl2ljtHi1kRYHTX.PeyncDD5OoPJkkTO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1757, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343017, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Trl2ljtHi1kRYHTX" +} diff --git a/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json b/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json new file mode 100644 index 00000000..b6771136 --- /dev/null +++ b/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json @@ -0,0 +1,87 @@ +{ + "_id": "rdOU1FmBq1nqQKW5", + "name": "Streitkolben +3", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-steel-grey.webp", + "effects": [ + { + "_id": "dgH1Fyz2pVFcmhFL", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!rdOU1FmBq1nqQKW5.dgH1Fyz2pVFcmhFL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2257, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343474, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rdOU1FmBq1nqQKW5" +} diff --git a/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json b/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json new file mode 100644 index 00000000..ed2fa842 --- /dev/null +++ b/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json @@ -0,0 +1,35 @@ +{ + "_id": "mjBwhnK5gf9MIdlm", + "name": "Streitkolben", + "type": "weapon", + "img": "icons/weapons/maces/mace-spiked-steel-wood.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 7, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343332, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mjBwhnK5gf9MIdlm" +} diff --git a/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json b/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json new file mode 100644 index 00000000..61db75ba --- /dev/null +++ b/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json @@ -0,0 +1,87 @@ +{ + "_id": "xeSyfEpn3gABmKDR", + "name": "Sturmrobe", + "type": "armor", + "img": "icons/equipment/chest/robe-layered-teal.webp", + "effects": [ + { + "_id": "JjEEDD1H1NvKF1Vr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!xeSyfEpn3gABmKDR.JjEEDD1H1NvKF1Vr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese blaugraue Robe +1 mit aufgestickten Sturm- & Gewitterwolken gewährt +1 auf jeden Blitzzauber. Selbst bei Windstille wogt sie in einer leichten Brise.

", + "quantity": 1, + "price": 1751, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 0, + "armorMaterialType": "cloth", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343566, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xeSyfEpn3gABmKDR" +} diff --git a/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json b/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json new file mode 100644 index 00000000..8f91c3b3 --- /dev/null +++ b/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json @@ -0,0 +1,31 @@ +{ + "_id": "U89qHZqIfVM8xvaJ", + "name": "Tagesration (3 Mahlzeiten)", + "type": "loot", + "img": "icons/tools/cooking/can.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343024, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!U89qHZqIfVM8xvaJ" +} diff --git a/packs/items/Talenttrank_pljOii88ltzuQNsu.json b/packs/items/Talenttrank_pljOii88ltzuQNsu.json new file mode 100644 index 00000000..2ef8265a --- /dev/null +++ b/packs/items/Talenttrank_pljOii88ltzuQNsu.json @@ -0,0 +1,31 @@ +{ + "_id": "pljOii88ltzuQNsu", + "name": "Talenttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-labeled-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Metallisch riechend, erhöht dieser Trank für W20 Runden ein vom Trinkenden bereits beherrschtes Talent um +I.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343461, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pljOii88ltzuQNsu" +} diff --git a/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json b/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json new file mode 100644 index 00000000..4bfe151c --- /dev/null +++ b/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json @@ -0,0 +1,31 @@ +{ + "_id": "iMX7YuWPHnCnbeh8", + "name": "Talgkerze (brennt 6h)", + "type": "loot", + "img": "icons/sundries/lights/candle-unlit-grey.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.01, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343250, + "modifiedTime": 1740227863017, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iMX7YuWPHnCnbeh8" +} diff --git a/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json b/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json new file mode 100644 index 00000000..ad6156ec --- /dev/null +++ b/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json @@ -0,0 +1,31 @@ +{ + "_id": "9aY1zWfD5RwZlAUH", + "name": "Tee (10 Tassen)", + "type": "loot", + "img": "icons/commodities/flowers/buds-red-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.05, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342774, + "modifiedTime": 1740227862971, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9aY1zWfD5RwZlAUH" +} diff --git a/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json b/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json new file mode 100644 index 00000000..ede65106 --- /dev/null +++ b/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json @@ -0,0 +1,31 @@ +{ + "_id": "1uHuQJcCjjxzvP4C", + "name": "Teleporttrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-fumes-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser rauchige, wirbelnde Trank wirkt den Zauber @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} auf den Trinker (keine Probe notwendig), nicht jedoch auf weitere Charaktere.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342655, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1uHuQJcCjjxzvP4C" +} diff --git a/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json b/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json new file mode 100644 index 00000000..9dbfa30a --- /dev/null +++ b/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json @@ -0,0 +1,31 @@ +{ + "_id": "fB8GyT0S38fomHsg", + "name": "Tinte (reicht für 50 Seiten)", + "type": "loot", + "img": "icons/tools/scribal/ink-quill-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343196, + "modifiedTime": 1740227863014, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fB8GyT0S38fomHsg" +} diff --git a/packs/items/Topf_cDIVsXpVltyRnhqM.json b/packs/items/Topf_cDIVsXpVltyRnhqM.json new file mode 100644 index 00000000..2ba3248e --- /dev/null +++ b/packs/items/Topf_cDIVsXpVltyRnhqM.json @@ -0,0 +1,31 @@ +{ + "_id": "cDIVsXpVltyRnhqM", + "name": "Topf", + "type": "loot", + "img": "icons/tools/cooking/cauldron-empty.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343108, + "modifiedTime": 1740227863008, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cDIVsXpVltyRnhqM" +} diff --git a/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json b/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json new file mode 100644 index 00000000..4572a27e --- /dev/null +++ b/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json @@ -0,0 +1,31 @@ +{ + "_id": "dUQPe5X6ka3HJLuF", + "name": "Trank der Gasgestalt", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-fancy-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser meist rauchige Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.tZJoj1PGrRGe9eMV]{Gasgestalt} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343139, + "modifiedTime": 1740227863011, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dUQPe5X6ka3HJLuF" +} diff --git a/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json b/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json new file mode 100644 index 00000000..d36a8bd7 --- /dev/null +++ b/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json @@ -0,0 +1,31 @@ +{ + "_id": "74iFRkzvOwLxOxOq", + "name": "Trank der Lebenskraft", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-labeled-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist blutroten Tränke erhöhen die Lebenskraft um W20 für W20 Stunden.

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342735, + "modifiedTime": 1740227862967, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!74iFRkzvOwLxOxOq" +} diff --git a/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json b/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json new file mode 100644 index 00000000..45088efe --- /dev/null +++ b/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json @@ -0,0 +1,31 @@ +{ + "_id": "nixhgFSQ7jaZrvxD", + "name": "Trank der Zwergensicht", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-labeled-medicine-capped-red-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist schwarze Getränk gewährt für W20 Stunden dem Trinker die zwergische Volksfähigkeit Dunkelsicht (DS4 S. 83).

", + "quantity": 1, + "price": 15, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343360, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nixhgFSQ7jaZrvxD" +} diff --git a/packs/items/Turmschild_0e8GeSHxVf72FXvT.json b/packs/items/Turmschild_0e8GeSHxVf72FXvT.json new file mode 100644 index 00000000..421356e8 --- /dev/null +++ b/packs/items/Turmschild_0e8GeSHxVf72FXvT.json @@ -0,0 +1,85 @@ +{ + "_id": "0e8GeSHxVf72FXvT", + "name": "Turmschild", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-boss-red.webp", + "effects": [ + { + "_id": "ScAKi1eiWow9Y1ZZ", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!0e8GeSHxVf72FXvT.ScAKi1eiWow9Y1ZZ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -1

", + "quantity": 1, + "price": 15, + "availability": "village", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342637, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0e8GeSHxVf72FXvT" +} diff --git a/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json b/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json new file mode 100644 index 00000000..787778a8 --- /dev/null +++ b/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json @@ -0,0 +1,128 @@ +{ + "_id": "ibiHqm4rH8meeu9m", + "name": "Turmschild +1", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-engraved-lance-rest.webp", + "effects": [ + { + "_id": "ScAKi1eiWow9Y1ZZ", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.movement.total", + "value": "-0.5", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Laufen -0,5", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ibiHqm4rH8meeu9m.ScAKi1eiWow9Y1ZZ" + }, + { + "_id": "TeyRcwja5lQWHICW", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ibiHqm4rH8meeu9m.TeyRcwja5lQWHICW" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Laufen -0,5

", + "quantity": 1, + "price": 3265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343297, + "modifiedTime": 1740227863018, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ibiHqm4rH8meeu9m" +} diff --git a/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json b/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json new file mode 100644 index 00000000..229a1c6d --- /dev/null +++ b/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json @@ -0,0 +1,85 @@ +{ + "_id": "Li5rC0lvytKRAc31", + "name": "Turmschild +2", + "type": "shield", + "img": "icons/equipment/shield/heater-steel-gold.webp", + "effects": [ + { + "_id": "yfHGGfxxGvmHG6b9", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Li5rC0lvytKRAc31.yfHGGfxxGvmHG6b9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 4265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342901, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Li5rC0lvytKRAc31" +} diff --git a/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json b/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json new file mode 100644 index 00000000..b458632c --- /dev/null +++ b/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json @@ -0,0 +1,85 @@ +{ + "_id": "UNd96UN0NQo8I0SI", + "name": "Turmschild +3", + "type": "shield", + "img": "icons/equipment/shield/heater-embossed-gold.webp", + "effects": [ + { + "_id": "ZXSBIh1UotdZuHbj", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!UNd96UN0NQo8I0SI.ZXSBIh1UotdZuHbj" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": null, + "quantity": 1, + "price": 5265, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343035, + "modifiedTime": 1740227863001, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UNd96UN0NQo8I0SI" +} diff --git a/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json b/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json new file mode 100644 index 00000000..0917855c --- /dev/null +++ b/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json @@ -0,0 +1,31 @@ +{ + "_id": "BeXHrv1TQzgfV6Mc", + "name": "Umhängetasche", + "type": "loot", + "img": "icons/containers/bags/pack-leather-embossed-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342792, + "modifiedTime": 1740227862974, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BeXHrv1TQzgfV6Mc" +} diff --git a/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json b/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json new file mode 100644 index 00000000..96164657 --- /dev/null +++ b/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json @@ -0,0 +1,32 @@ +{ + "_id": "kurEYTP9rqk8YnND", + "name": "Unsichtbarkeitsring", + "type": "equipment", + "img": "icons/equipment/finger/ring-band-rounded-gold.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Böse Zungen behaupten, dass dieser Ring, in den @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} eingebettet ist, seinen Träger zu seinem abhängigen Sklaven macht.

", + "quantity": 1, + "price": 6972, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343319, + "modifiedTime": 1740227863019, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kurEYTP9rqk8YnND" +} diff --git a/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json b/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json new file mode 100644 index 00000000..6983fea4 --- /dev/null +++ b/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json @@ -0,0 +1,31 @@ +{ + "_id": "uYcNgFz5PkaOmK6b", + "name": "Unsichtbarkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-tied-necklace-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft klare, farblose Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 500, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343529, + "modifiedTime": 1740227863027, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uYcNgFz5PkaOmK6b" +} diff --git a/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json b/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json new file mode 100644 index 00000000..7cdc2028 --- /dev/null +++ b/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json @@ -0,0 +1,31 @@ +{ + "_id": "1HjmUAR5mf59yXlw", + "name": "Unverwundbartrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-shiny-red.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält für W20 Runden +20 auf seine Abwehr durch diesen meist roten, flockigen Trank. Dieser Bonus gilt auch bei Schaden, gegen den normalerweise keine Abwehr zulässig ist.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342649, + "modifiedTime": 1740227862962, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1HjmUAR5mf59yXlw" +} diff --git a/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json b/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json new file mode 100644 index 00000000..fd51f614 --- /dev/null +++ b/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json @@ -0,0 +1,31 @@ +{ + "_id": "HIfMiFd0ZbqE3VKt", + "name": "Verbandszeug", + "type": "loot", + "img": "icons/commodities/cloth/cloth-roll-worn-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verschnaufen +1 oder natürliches Heilergebnis +1

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342862, + "modifiedTime": 1740227862981, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HIfMiFd0ZbqE3VKt" +} diff --git a/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json b/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json new file mode 100644 index 00000000..1dd03b80 --- /dev/null +++ b/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json @@ -0,0 +1,31 @@ +{ + "_id": "Wjcv3WZW3j4jg9XY", + "name": "Vergrößerungstrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-bulb-corked-purple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vergrößert den Trinkenden auf das Doppelte seiner normalen Größe für W20/2 Minuten. KÖR, ST und HÄ werden verdoppelt und die Kampfwerte entsprechend angepasst.

", + "quantity": 1, + "price": 1000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343060, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Wjcv3WZW3j4jg9XY" +} diff --git a/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json b/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json new file mode 100644 index 00000000..42668ec0 --- /dev/null +++ b/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json @@ -0,0 +1,31 @@ +{ + "_id": "RlA4PIa9hnsqoqFi", + "name": "Verjüngungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-tube-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Trinkende wird augenblicklich W20 Jahre jünger.

", + "quantity": 1, + "price": 5000, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342967, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RlA4PIa9hnsqoqFi" +} diff --git a/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json b/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json new file mode 100644 index 00000000..2b4db098 --- /dev/null +++ b/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json @@ -0,0 +1,31 @@ +{ + "_id": "LAI81qZlbkr7MlGY", + "name": "Verkleinerungstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-corked-yellow.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verkleinert den Trinkenden auf ein Zehntel seiner normalen Größe für W20 Minuten. KÖR, ST und HÄ werden solange halbiert und die Kampfwerte entsprechend angepasst.

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342900, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LAI81qZlbkr7MlGY" +} diff --git a/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json b/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json new file mode 100644 index 00000000..637f8a16 --- /dev/null +++ b/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json @@ -0,0 +1,31 @@ +{ + "_id": "gXr3lLQmlHeDMuv5", + "name": "Wachsamkeitstrank", + "type": "loot", + "img": "icons/consumables/potions/potion-tube-corked-labeled-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses meist klare Getränk gewährt für W20 Stunden auf alle Bemerken-Proben einen Bonus von +5.

", + "quantity": 1, + "price": 15, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343214, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gXr3lLQmlHeDMuv5" +} diff --git a/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json b/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json new file mode 100644 index 00000000..717900bd --- /dev/null +++ b/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json @@ -0,0 +1,31 @@ +{ + "_id": "S204KfhmoRdMDVpZ", + "name": "Wachskerze (brennt 10h)", + "type": "loot", + "img": "icons/sundries/lights/candle-unlit-tan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.02, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342979, + "modifiedTime": 1740227862998, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!S204KfhmoRdMDVpZ" +} diff --git a/packs/items/Waffenlos_OvxWaEJrElas3EUL.json b/packs/items/Waffenlos_OvxWaEJrElas3EUL.json new file mode 100644 index 00000000..4cd60dcf --- /dev/null +++ b/packs/items/Waffenlos_OvxWaEJrElas3EUL.json @@ -0,0 +1,35 @@ +{ + "_id": "OvxWaEJrElas3EUL", + "name": "Waffenlos", + "type": "weapon", + "img": "icons/equipment/hand/gauntlet-tooled-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342927, + "modifiedTime": 1740227862989, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OvxWaEJrElas3EUL" +} diff --git a/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json b/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json new file mode 100644 index 00000000..effd711c --- /dev/null +++ b/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json @@ -0,0 +1,31 @@ +{ + "_id": "zXgxu2gCkaTSSSMU", + "name": "Waffenpaste", + "type": "loot", + "img": "icons/tools/laboratory/bowl-liquid-black.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Macht WB+1; hält W20 Nahkampfangriffe bzw. reicht für W20 Fernkampfgeschosse

", + "quantity": 1, + "price": 0.5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343609, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zXgxu2gCkaTSSSMU" +} diff --git a/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json b/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json new file mode 100644 index 00000000..984b1e6d --- /dev/null +++ b/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json @@ -0,0 +1,31 @@ +{ + "_id": "luYRwVP5oR6cdDMQ", + "name": "Waffenweih", + "type": "loot", + "img": "icons/consumables/potions/potion-jar-capped-teal.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Über eine Waffe geschüttet, verleiht dieser meist silberne Trank dieser für die Dauer eines Kampfes den Effekt des Zaubers @Compendium[ds4.spells.ASvdS1fyjmRS1Xb6]{Magische Waffe}.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343322, + "modifiedTime": 1740227863020, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!luYRwVP5oR6cdDMQ" +} diff --git a/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json b/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json new file mode 100644 index 00000000..7817fa21 --- /dev/null +++ b/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json @@ -0,0 +1,31 @@ +{ + "_id": "4E9WdEs1JaWrCYim", + "name": "Wagen (4 Räder)", + "type": "loot", + "img": "icons/commodities/wood/wood-wheel-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 35, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342704, + "modifiedTime": 1740227862965, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4E9WdEs1JaWrCYim" +} diff --git a/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json b/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json new file mode 100644 index 00000000..7abac5a8 --- /dev/null +++ b/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json @@ -0,0 +1,31 @@ +{ + "_id": "ygiod7LPfxwz0Jbb", + "name": "Wasserschlauch (5 Liter)", + "type": "loot", + "img": "icons/sundries/survival/waterskin-leather-brown.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 0.5, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343581, + "modifiedTime": 1740227863029, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ygiod7LPfxwz0Jbb" +} diff --git a/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json b/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json new file mode 100644 index 00000000..e7b58c2d --- /dev/null +++ b/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json @@ -0,0 +1,31 @@ +{ + "_id": "s47J9CEdTELiRlPT", + "name": "Wasserwandeltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-jar-corked-orange.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser oft braune Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.mYZ3gFtRJASLL9pv]{Wasserwandeln} (Probenwert 20; Patzer ausgeschlossen).

", + "quantity": 1, + "price": 100, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343479, + "modifiedTime": 1740227863024, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s47J9CEdTELiRlPT" +} diff --git a/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json b/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json new file mode 100644 index 00000000..eb0896ba --- /dev/null +++ b/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json @@ -0,0 +1,84 @@ +{ + "_id": "1vrVO2sqFqC4AA1k", + "name": "Wechselring", + "type": "equipment", + "img": "icons/equipment/finger/ring-cabochon-white-blue.webp", + "effects": [ + { + "_id": "uaLYD6951CS9od5d", + "changes": [ + { + "key": "system.rank.total", + "mode": 2, + "value": "5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "Wechsler", + "condition": "'@item.type' === 'talent'" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wechsler +V", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!1vrVO2sqFqC4AA1k.uaLYD6951CS9od5d" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mittels Wechsler +V verleiht dieser Ring +10 auf Proben, um die eigenen Zauber zu wechseln.

", + "quantity": 1, + "price": 1502, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342664, + "modifiedTime": 1740227862963, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1vrVO2sqFqC4AA1k" +} diff --git a/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json b/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json new file mode 100644 index 00000000..023cb1bf --- /dev/null +++ b/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json @@ -0,0 +1,130 @@ +{ + "_id": "83CJm0YUiYxIpcQx", + "name": "Wehrpanzer", + "type": "armor", + "img": "icons/equipment/chest/breastplate-cuirass-steel-grey.webp", + "effects": [ + { + "_id": "wz2krJzwVba18XvV", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Panzerung +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!83CJm0YUiYxIpcQx.wz2krJzwVba18XvV" + }, + { + "_id": "TuRxuZf6QZL2OvRk", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "2", + "mode": 2, + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "tint": "#ffffff", + "transfer": true, + "origin": null, + "name": "Abwehr +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!83CJm0YUiYxIpcQx.TuRxuZf6QZL2OvRk" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese massive, mit Metallverzierungen verstärkte Plattenrüstung +3 verfügt sogar über einen Halspanzer und gewährt ihrem Träger zusätzlich +2 auf Abwehr.

", + "quantity": 1, + "price": 7300, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 3, + "armorMaterialType": "plate", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342756, + "modifiedTime": 1740227862968, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!83CJm0YUiYxIpcQx" +} diff --git a/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json b/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json new file mode 100644 index 00000000..a2b180ff --- /dev/null +++ b/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json @@ -0,0 +1,31 @@ +{ + "_id": "RoXGTPdisjn6AdYK", + "name": "Weihwasser (1/2 Liter)", + "type": "loot", + "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Weihwasser verursacht gegen Dämonen und Untote nicht abwehrbaren Schaden. Jede Einheit Weihwasser hat einen anderen Angriffswert, der mit W20 ermittelt wird. Dieser Wert wird erst ausgewürfelt, wenn das Weihwasser den Dämonen bzw. Untoten trifft, es sei denn, es wird vorher in Bezug auf seinen Schadenswert von einem Zauberwirker mit GEI+AU, gefolgt von GEI+VE, erfolgreich analysiert.

\n

Eine Weihwassereinheit kann man auf eine Waffe/ein Geschoss auftragen (benötigt 1 Aktion) und dann einen normalen Angriff mit Schlagen bzw. Schießen würfeln. Ist dieser erfolgreich, wird bei Dämonen und Untoten neben dem normalen Schaden auch noch ein Angriff für das Weihwasser gewürfelt, der nicht abwehrbaren Schaden verursacht. Nach dem ersten Treffer ist die Einheit Weihwasser aufgebraucht.

\n

Alternativ kann man Weihwassereinheiten in zerbrechliche Phiolen (WB +0; 2 GM) füllen und diese im Nah- oder Fernkampf gegen Dämonen und Untote einsetzen, wobei die zerbrechlichen Gefäße zerspringen. In solchen Fällen verursacht nur das Weihwasser Schaden, nicht die Schießen-Probe.

\n

Weihwasser kann außerdem dazu benutzt werden, in schützenden Linien oder Kreisen (1 m pro Einheit) auf den Boden geschüttet zu werden, um für eine gewisse Zeit Dämonen bzw. Untote aufzuhalten, die das Weihwasser nicht passieren können.

", + "quantity": 1, + "price": 0.1, + "availability": "hamlet", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342969, + "modifiedTime": 1740227862996, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RoXGTPdisjn6AdYK" +} diff --git a/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json b/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json new file mode 100644 index 00000000..cbf1e54a --- /dev/null +++ b/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json @@ -0,0 +1,31 @@ +{ + "_id": "zQLTx3zmJfnrdmlN", + "name": "Werkzeugset", + "type": "loot", + "img": "icons/tools/hand/hammer-and-nail.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 5, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343597, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zQLTx3zmJfnrdmlN" +} diff --git a/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json b/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json new file mode 100644 index 00000000..a1142957 --- /dev/null +++ b/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json @@ -0,0 +1,79 @@ +{ + "_id": "yocl6DZ7hfOupqqz", + "name": "Wildhüterharnisch", + "type": "armor", + "img": "icons/equipment/chest/breastplate-layered-leather-brown.webp", + "effects": [ + { + "_id": "CUa4rA1A1cwWac46", + "flags": {}, + "changes": [ + { + "key": "system.combatValues.defense.total", + "value": "1", + "mode": 2, + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "origin": null, + "tint": "#ffffff", + "name": "Panzerung +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": null, + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!yocl6DZ7hfOupqqz.CUa4rA1A1cwWac46" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

In diese aus Fellen zusammengenähte Lederrüstung +1 wurde der Zauber @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} eingebettet.

", + "quantity": 1, + "price": 4714, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343587, + "modifiedTime": 1740227863030, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yocl6DZ7hfOupqqz" +} diff --git a/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json b/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json new file mode 100644 index 00000000..7334fdd6 --- /dev/null +++ b/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json @@ -0,0 +1,87 @@ +{ + "_id": "D7MaTfapKAeO5TRs", + "name": "Wolfsmantel", + "type": "armor", + "img": "icons/equipment/chest/shirt-simple-grey.webp", + "effects": [ + { + "_id": "2IDnDKbImHFAHAu6", + "changes": [ + { + "key": "system.checks.perception", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Bemerken +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!D7MaTfapKAeO5TRs.2IDnDKbImHFAHAu6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese Lederrüstung aus Wolfspelz verleiht ihrem Träger +3 auf sämtliche Bemerken-Proben. Ein ausgenommener Wolfskopf bildet die Kapuze.

", + "quantity": 1, + "price": 1004, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "armorValue": 1, + "armorMaterialType": "leather", + "armorType": "body" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342807, + "modifiedTime": 1740227862977, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!D7MaTfapKAeO5TRs" +} diff --git a/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json b/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json new file mode 100644 index 00000000..9ffba544 --- /dev/null +++ b/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json @@ -0,0 +1,87 @@ +{ + "_id": "hfxblADLXdGaRMAA", + "name": "Wurfmesser +1", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-steel.webp", + "effects": [ + { + "_id": "c2P4Qt8b6GonPFv7", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +1 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!hfxblADLXdGaRMAA.c2P4Qt8b6GonPFv7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 1, + "opponentDefense": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343237, + "modifiedTime": 1740227863016, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hfxblADLXdGaRMAA" +} diff --git a/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json b/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json new file mode 100644 index 00000000..3add72e1 --- /dev/null +++ b/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json @@ -0,0 +1,87 @@ +{ + "_id": "eIXRfSsAL5ECi1uq", + "name": "Wurfmesser +2", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-engraved-green.webp", + "effects": [ + { + "_id": "XPV4jbYeNcFVFvZr", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!eIXRfSsAL5ECi1uq.XPV4jbYeNcFVFvZr" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1252, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 2, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343151, + "modifiedTime": 1740227863012, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eIXRfSsAL5ECi1uq" +} diff --git a/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json b/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json new file mode 100644 index 00000000..23cff801 --- /dev/null +++ b/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json @@ -0,0 +1,87 @@ +{ + "_id": "VxyrCBfVdbRD5nj8", + "name": "Wurfmesser +3", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-ringed-blue.webp", + "effects": [ + { + "_id": "hQfQjfXJhE4yDXQU", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VxyrCBfVdbRD5nj8.hQfQjfXJhE4yDXQU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 1752, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 3, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343052, + "modifiedTime": 1740227863003, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VxyrCBfVdbRD5nj8" +} diff --git a/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json b/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json new file mode 100644 index 00000000..78a05bb4 --- /dev/null +++ b/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json @@ -0,0 +1,35 @@ +{ + "_id": "grAnIWqeXTAIGXmN", + "name": "Wurfmesser", + "type": "weapon", + "img": "icons/weapons/thrown/dagger-simple.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Distanzmalus -1 pro 2 m

", + "quantity": 1, + "price": 2, + "availability": "hamlet", + "storageLocation": "-", + "equipped": false, + "attackType": "meleeRanged", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343217, + "modifiedTime": 1740227863015, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!grAnIWqeXTAIGXmN" +} diff --git a/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json b/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json new file mode 100644 index 00000000..d3800db9 --- /dev/null +++ b/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json @@ -0,0 +1,32 @@ +{ + "_id": "0C9YNorSbYM5eyBj", + "name": "Zauberköcher", + "type": "equipment", + "img": "icons/containers/ammunition/arrows-quiver-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Pfeil, der aus diesem Köcher gezogen wird, hat für die Dauer einer Kampfrunde einen magischen Waffenbonus von +1.

", + "quantity": 1, + "price": 750.1, + "availability": "unset", + "storageLocation": "-", + "equipped": false + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342627, + "modifiedTime": 1740227862959, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0C9YNorSbYM5eyBj" +} diff --git a/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json b/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json new file mode 100644 index 00000000..bc2c013e --- /dev/null +++ b/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json @@ -0,0 +1,31 @@ +{ + "_id": "LoY2CnEEWfxbvjEt", + "name": "Zaubertrank", + "type": "loot", + "img": "icons/consumables/potions/bottle-pear-corked-pink.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Werte von Zaubern und Zielzauber für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342903, + "modifiedTime": 1740227862986, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LoY2CnEEWfxbvjEt" +} diff --git a/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json b/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json new file mode 100644 index 00000000..c2b6e1a8 --- /dev/null +++ b/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json @@ -0,0 +1,31 @@ +{ + "_id": "uqIQjhDGgbEuHYmd", + "name": "Zauberwechseltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Diese meist blauen Tränke gewähren für die Dauer eines Kampfes +10 auf Zauber wechseln.

", + "quantity": 1, + "price": 10, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343549, + "modifiedTime": 1740227863028, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uqIQjhDGgbEuHYmd" +} diff --git a/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json b/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json new file mode 100644 index 00000000..25dc2e86 --- /dev/null +++ b/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json @@ -0,0 +1,31 @@ +{ + "_id": "Van6Sze8TZl8Y88o", + "name": "Zelt (2 Mann)", + "type": "loot", + "img": "icons/environment/settlement/tent.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "", + "quantity": 1, + "price": 4, + "availability": "village", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343051, + "modifiedTime": 1740227863002, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Van6Sze8TZl8Y88o" +} diff --git a/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json b/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json new file mode 100644 index 00000000..8bf8e8a1 --- /dev/null +++ b/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json @@ -0,0 +1,31 @@ +{ + "_id": "zqlc3bq1ZfneLeYx", + "name": "Zieltrank", + "type": "loot", + "img": "icons/consumables/potions/potion-flask-capped-yellow-green.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhöht die Werte von Schießen und Zielzauber für die Dauer eines Kampfes um +1.

", + "quantity": 1, + "price": 25, + "availability": "unset", + "storageLocation": "-" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343618, + "modifiedTime": 1740227863031, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zqlc3bq1ZfneLeYx" +} diff --git a/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json b/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json new file mode 100644 index 00000000..41e9affe --- /dev/null +++ b/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json @@ -0,0 +1,138 @@ +{ + "_id": "pQqbXD5ELmjcu4Dd", + "name": "Zornhammer", + "type": "weapon", + "img": "icons/weapons/hammers/hammer-double-steel-embossed.webp", + "effects": [ + { + "_id": "dcGiLPK2AIDA7NHH", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pQqbXD5ELmjcu4Dd.dcGiLPK2AIDA7NHH" + }, + { + "_id": "RWRk7pwQf2vs1Aqv", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pQqbXD5ELmjcu4Dd.RWRk7pwQf2vs1Aqv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein schwerer, schlichter Streithammer +3, der einst einem Zwergenhelden gehörte.

\n

Zweihändig, Initiative -4

", + "quantity": 1, + "price": 3256, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343452, + "modifiedTime": 1740227863022, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pQqbXD5ELmjcu4Dd" +} diff --git a/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json b/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json new file mode 100644 index 00000000..41005045 --- /dev/null +++ b/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json @@ -0,0 +1,35 @@ +{ + "_id": "0f8ivq3Mveb3s3Fs", + "name": "Zwergenaxt", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 60, + "availability": "dwarves", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 3, + "opponentDefense": -2 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342638, + "modifiedTime": 1740227862961, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0f8ivq3Mveb3s3Fs" +} diff --git a/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json b/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json new file mode 100644 index 00000000..4fa73634 --- /dev/null +++ b/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json @@ -0,0 +1,35 @@ +{ + "_id": "JZkzRagRS8TKZplw", + "name": "Zwergenaxt +1", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-runes.webp", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 2310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 4, + "opponentDefense": -3 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342881, + "modifiedTime": 1740227862984, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JZkzRagRS8TKZplw" +} diff --git a/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json b/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json new file mode 100644 index 00000000..a2a19f0a --- /dev/null +++ b/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json @@ -0,0 +1,87 @@ +{ + "_id": "NHV9ho8tGutv0mrS", + "name": "Zwergenaxt +2", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-black.webp", + "effects": [ + { + "_id": "WsibIQWwcjabH8QS", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NHV9ho8tGutv0mrS.WsibIQWwcjabH8QS" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 2810, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 5, + "opponentDefense": -4 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342910, + "modifiedTime": 1740227862987, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NHV9ho8tGutv0mrS" +} diff --git a/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json b/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json new file mode 100644 index 00000000..022024a6 --- /dev/null +++ b/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json @@ -0,0 +1,138 @@ +{ + "_id": "Tu0Mf3Qib68wxpRs", + "name": "Zwergenaxt +3", + "type": "weapon", + "img": "icons/weapons/axes/axe-double-engraved-blue.webp", + "effects": [ + { + "_id": "Ytio5tOcCUO91MQ0", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Tu0Mf3Qib68wxpRs.Ytio5tOcCUO91MQ0" + }, + { + "_id": "ulhp9EsUM5Tf0iCd", + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "disabled": false, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +3 (magisch)", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Tu0Mf3Qib68wxpRs.ulhp9EsUM5Tf0iCd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Zweihändig, Initiative -1

", + "quantity": 1, + "price": 3310, + "availability": "unset", + "storageLocation": "-", + "equipped": false, + "attackType": "melee", + "weaponBonus": 6, + "opponentDefense": -5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995343020, + "modifiedTime": 1740227863000, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Tu0Mf3Qib68wxpRs" +} diff --git a/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json b/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json new file mode 100644 index 00000000..9a54125e --- /dev/null +++ b/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json @@ -0,0 +1,27 @@ +{ + "_id": "ylqXcZHRbIBeV20Z", + "name": "Ahnenrunen", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342375, + "modifiedTime": 1740227862520, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ylqXcZHRbIBeV20Z" +} diff --git a/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json b/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json new file mode 100644 index 00000000..15ed6282 --- /dev/null +++ b/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json @@ -0,0 +1,27 @@ +{ + "_id": "xpvHuSywc8lJa2UN", + "name": "Elfisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342367, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xpvHuSywc8lJa2UN" +} diff --git a/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json b/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json new file mode 100644 index 00000000..fac4866d --- /dev/null +++ b/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json @@ -0,0 +1,27 @@ +{ + "_id": "GQNpFENXcjJGeYr2", + "name": "Freiwort", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Freiwort ist die Gemeinsprache der Freien Lande.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342358, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GQNpFENXcjJGeYr2" +} diff --git a/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json b/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json new file mode 100644 index 00000000..73a9e9dd --- /dev/null +++ b/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json @@ -0,0 +1,27 @@ +{ + "_id": "4KbbQeTvvJC7iNrI", + "name": "Gormanische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342357, + "modifiedTime": 1740227862517, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4KbbQeTvvJC7iNrI" +} diff --git a/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json b/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json new file mode 100644 index 00000000..62f21cf1 --- /dev/null +++ b/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json @@ -0,0 +1,27 @@ +{ + "_id": "n6KU1XIzbPWups0D", + "name": "Kaitanisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342365, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!n6KU1XIzbPWups0D" +} diff --git a/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json b/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json new file mode 100644 index 00000000..70f01531 --- /dev/null +++ b/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json @@ -0,0 +1,27 @@ +{ + "_id": "k8FSxBda9CoLOJqZ", + "name": "Kaitanische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342362, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!k8FSxBda9CoLOJqZ" +} diff --git a/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json b/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json new file mode 100644 index 00000000..7c740370 --- /dev/null +++ b/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json @@ -0,0 +1,27 @@ +{ + "_id": "n2Nbg0ttFzcMxp7T", + "name": "Keilschrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342364, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!n2Nbg0ttFzcMxp7T" +} diff --git a/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json b/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json new file mode 100644 index 00000000..0d71fd5d --- /dev/null +++ b/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json @@ -0,0 +1,27 @@ +{ + "_id": "josgKzD9UmDOvTup", + "name": "Ornamentschrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342361, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!josgKzD9UmDOvTup" +} diff --git a/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json b/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json new file mode 100644 index 00000000..7b143fa7 --- /dev/null +++ b/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json @@ -0,0 +1,27 @@ +{ + "_id": "usEWD48iYnMHO3Ty", + "name": "Zasarisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342366, + "modifiedTime": 1740227862519, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!usEWD48iYnMHO3Ty" +} diff --git a/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json b/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json new file mode 100644 index 00000000..85208c54 --- /dev/null +++ b/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json @@ -0,0 +1,27 @@ +{ + "_id": "O1U9jd0yJoydHwT8", + "name": "Zasarische Schrift", + "type": "alphabet", + "img": "icons/svg/book.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342359, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!O1U9jd0yJoydHwT8" +} diff --git a/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json b/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json new file mode 100644 index 00000000..6bc41058 --- /dev/null +++ b/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json @@ -0,0 +1,27 @@ +{ + "_id": "PzkVTViII6ungWyp", + "name": "Zwergisch", + "type": "language", + "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342360, + "modifiedTime": 1740227862518, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PzkVTViII6ungWyp" +} diff --git a/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json b/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json new file mode 100644 index 00000000..07f43f43 --- /dev/null +++ b/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json @@ -0,0 +1,27 @@ +{ + "_id": "sXqjA4m3AsWmMo3a", + "name": "Allergie gegen Metall", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes können kein Metall nutzen (auch keine Waffen und Rüstungen aus Metall) und erhalten auf Abwehr -1 bei Schaden durch Metallwaffen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349157, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sXqjA4m3AsWmMo3a" +} diff --git a/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json b/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json new file mode 100644 index 00000000..4971f29c --- /dev/null +++ b/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json @@ -0,0 +1,27 @@ +{ + "_id": "Fo1LiBcGi9BoHJ9v", + "name": "Arrogant", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes wirken arrogant und nehmen nur ungern Hilfe von anderen an, so auch Heilmagie nur im aller größten Notfall.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349083, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Fo1LiBcGi9BoHJ9v" +} diff --git a/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json b/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json new file mode 100644 index 00000000..73c07b8a --- /dev/null +++ b/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json @@ -0,0 +1,27 @@ +{ + "_id": "VTBlOswerHKLvjqI", + "name": "Dunkelsicht", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Dunkelsicht (DS4 S. 83).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349127, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VTBlOswerHKLvjqI" +} diff --git a/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json b/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json new file mode 100644 index 00000000..8c1e47d2 --- /dev/null +++ b/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json @@ -0,0 +1,77 @@ +{ + "_id": "nwABE3AeAUHbKd7U", + "name": "Einäugig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "JOqcrV2Ns68t0SaO", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schießen, Zielzaubern -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!nwABE3AeAUHbKd7U.JOqcrV2Ns68t0SaO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält -1 auf Schießen und Zielzauber.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349152, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nwABE3AeAUHbKd7U" +} diff --git a/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json b/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json new file mode 100644 index 00000000..1c4083a3 --- /dev/null +++ b/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json @@ -0,0 +1,71 @@ +{ + "_id": "b4vuLR8nbyFtCUT6", + "name": "Fragil", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "Y9VbkphCkoVaRMjL", + "changes": [ + { + "key": "", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!b4vuLR8nbyFtCUT6.Y9VbkphCkoVaRMjL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses zartbesaitete Volk erhält -1 auf Abwehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349138, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!b4vuLR8nbyFtCUT6" +} diff --git a/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json b/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json new file mode 100644 index 00000000..e3431932 --- /dev/null +++ b/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json @@ -0,0 +1,71 @@ +{ + "_id": "cgWu5Mfd37oJ1Jw3", + "name": "Geschwind", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "KFyXovHEQ71WxiR6", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!cgWu5Mfd37oJ1Jw3.KFyXovHEQ71WxiR6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält +2 auf Initiative.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349140, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cgWu5Mfd37oJ1Jw3" +} diff --git a/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json b/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json new file mode 100644 index 00000000..0142e17c --- /dev/null +++ b/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json @@ -0,0 +1,27 @@ +{ + "_id": "KmcfnDcxyFRRelRh", + "name": "Goldgier", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immer wenn ein Mitglied dieses Volkes etwas Wertvolles bemerkt, muss es GEI+VE+4 schaffen, oder es will es unbedingt besitzen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349091, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KmcfnDcxyFRRelRh" +} diff --git a/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json b/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json new file mode 100644 index 00000000..f6b3038b --- /dev/null +++ b/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json @@ -0,0 +1,71 @@ +{ + "_id": "ewWlk1Ud6dFVZD2u", + "name": "Groß", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "D8cY12yVEAaNX52B", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft x 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ewWlk1Ud6dFVZD2u.D8cY12yVEAaNX52B" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lebenskraft x 2, aber auch leichter zu treffen (DS4 S. 44).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349143, + "modifiedTime": 1740227862616, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ewWlk1Ud6dFVZD2u" +} diff --git a/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json b/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json new file mode 100644 index 00000000..bde79f6f --- /dev/null +++ b/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json @@ -0,0 +1,71 @@ +{ + "_id": "3RX84f54FUuk20jo", + "name": "Klein", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "krC2HXyXBfo2AZsy", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "0.5", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft / 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!3RX84f54FUuk20jo.krC2HXyXBfo2AZsy" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lebenskraft halbiert, aber auch schwerer zu treffen (DS4 S. 44). Waffen sind zu groß, ein Kurzschwert wird zur Zweihandwaffe.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349016, + "modifiedTime": 1740227862612, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3RX84f54FUuk20jo" +} diff --git a/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json b/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json new file mode 100644 index 00000000..8eb9c737 --- /dev/null +++ b/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json @@ -0,0 +1,27 @@ +{ + "_id": "Uui9ofMtBTX4v0Yj", + "name": "Langlebig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes altern nur noch langsam, sobald sie erwachsen sind.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349105, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Uui9ofMtBTX4v0Yj" +} diff --git a/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json b/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json new file mode 100644 index 00000000..07fa61b3 --- /dev/null +++ b/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json @@ -0,0 +1,71 @@ +{ + "_id": "xWClnNIkOvDLasgl", + "name": "Langsam", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "sSCcqM8OaPaP6kW2", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Laufen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!xWClnNIkOvDLasgl.sSCcqM8OaPaP6kW2" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vertreter dieses Volkes sind langsam und erhalten -1 auf Laufen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349159, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xWClnNIkOvDLasgl" +} diff --git a/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json b/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json new file mode 100644 index 00000000..6eab3568 --- /dev/null +++ b/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json @@ -0,0 +1,71 @@ +{ + "_id": "x35PNIYq3FCKIYCA", + "name": "Leichtfüßig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "S4I2jS5RdAoAHLAL", + "changes": [ + { + "key": "system.checks.sneak", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schleichen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!x35PNIYq3FCKIYCA.S4I2jS5RdAoAHLAL" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Volk erhält bei Schleichen und ähnlichen Proben einen Bonus von +1.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349158, + "modifiedTime": 1740227862619, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!x35PNIYq3FCKIYCA" +} diff --git a/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json b/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json new file mode 100644 index 00000000..7f627886 --- /dev/null +++ b/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json @@ -0,0 +1,27 @@ +{ + "_id": "hPT9Q5DG9YFK1NTB", + "name": "Magieresistent", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes sind weniger betroffen durch Zauber und Magie. Sämtliche magischen Auswirkungen (Schaden, aber auch Heilung, Trankeffekte oder die Zauberdauer u.ä.) werden bei ihnen halbiert, außer erlittener Elementarschaden.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349149, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hPT9Q5DG9YFK1NTB" +} diff --git a/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json b/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json new file mode 100644 index 00000000..ea681252 --- /dev/null +++ b/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json @@ -0,0 +1,71 @@ +{ + "_id": "sFgC2eZxZIvii9OP", + "name": "Magisch begabt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "QxBn4JAl9dmgj5xH", + "changes": [ + { + "key": "system.combatValues.spellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Zaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sFgC2eZxZIvii9OP.QxBn4JAl9dmgj5xH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes sind von der Magie berührt – es fällt ihnen unheimlich leicht, Zauber zu verstehen und zu wirken. Sie erhalten +1 auf Zaubern.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349156, + "modifiedTime": 1740227862618, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sFgC2eZxZIvii9OP" +} diff --git a/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json b/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json new file mode 100644 index 00000000..4abb5be0 --- /dev/null +++ b/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json @@ -0,0 +1,27 @@ +{ + "_id": "FnyDr2OhywiARDPl", + "name": "Magisch unbegabt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes können überhaupt nicht zaubern.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349053, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FnyDr2OhywiARDPl" +} diff --git a/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json b/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json new file mode 100644 index 00000000..2a2cb855 --- /dev/null +++ b/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json @@ -0,0 +1,27 @@ +{ + "_id": "jv1fgwHuCG6I8vMa", + "name": "Nachtsicht", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Nachtsicht (DS4 S. 83).

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349151, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jv1fgwHuCG6I8vMa" +} diff --git a/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json b/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json new file mode 100644 index 00000000..74bcbfd7 --- /dev/null +++ b/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json @@ -0,0 +1,71 @@ +{ + "_id": "qC9HBqm6nPRFg62e", + "name": "Schnell", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "jXtkQik1kgzTNeDC", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Laufen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!qC9HBqm6nPRFg62e.jXtkQik1kgzTNeDC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses flinke Volk erhält +1 auf Laufen.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349154, + "modifiedTime": 1740227862618, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qC9HBqm6nPRFg62e" +} diff --git a/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json b/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json new file mode 100644 index 00000000..5ce85514 --- /dev/null +++ b/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json @@ -0,0 +1,27 @@ +{ + "_id": "gIacfUxo5FToVbux", + "name": "Talentiert", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen zusätzlichen Talentpunkt bei der Charaktererschaffung.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349146, + "modifiedTime": 1740227862617, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gIacfUxo5FToVbux" +} diff --git a/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json b/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json new file mode 100644 index 00000000..91703606 --- /dev/null +++ b/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json @@ -0,0 +1,113 @@ +{ + "_id": "43nqAxNU6hpBtMiY", + "name": "Tollpatschig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "RSs2hV25q3KJkFmg", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.climb", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.hide", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.jump", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.ride", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.sneak", + "mode": 2, + "value": "-4", + "priority": null + }, + { + "key": "system.checks.swim", + "mode": 2, + "value": "-4", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Proben mit Agilität -4", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!43nqAxNU6hpBtMiY.RSs2hV25q3KJkFmg" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Tollpatschige Völker sind sehr ungeschickt und grobmotorisch – sie erhalten auf alle Proben mit Agilität einen Malus von -4.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349022, + "modifiedTime": 1740227862612, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!43nqAxNU6hpBtMiY" +} diff --git a/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json b/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json new file mode 100644 index 00000000..3ff51881 --- /dev/null +++ b/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json @@ -0,0 +1,27 @@ +{ + "_id": "yUyyyPRE3LvUUIGI", + "name": "Ungepflegt", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten auf alle Proben sozialer Interaktion mit Vertretern anderer Völker einen Malus von -2.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349161, + "modifiedTime": 1740227862620, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yUyyyPRE3LvUUIGI" +} diff --git a/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json b/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json new file mode 100644 index 00000000..77056151 --- /dev/null +++ b/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json @@ -0,0 +1,27 @@ +{ + "_id": "QIjVVVMR4PcO2NZc", + "name": "Unsterblich", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes altern, nachdem sie erwachsen sind, nicht wie Normalsterbliche. Das Alter rafft sie nicht dahin, sie sterben nur durch Gewalt oder aus Lebensüberdruß.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349099, + "modifiedTime": 1740227862614, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QIjVVVMR4PcO2NZc" +} diff --git a/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json b/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json new file mode 100644 index 00000000..8271528b --- /dev/null +++ b/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json @@ -0,0 +1,27 @@ +{ + "_id": "5hd2Tk6MzudSxM2M", + "name": "Untalentiert", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der erste Rang eines Talentes kostet dieses Volk jeweils einen Talentpunkt mehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349037, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5hd2Tk6MzudSxM2M" +} diff --git a/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json b/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json new file mode 100644 index 00000000..433b5e3a --- /dev/null +++ b/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json @@ -0,0 +1,27 @@ +{ + "_id": "YV9KiRebanh28Jk2", + "name": "Verabscheuungswürdig", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes werden von anderen Völkern verabscheut und gemieden. Sie verkaufen Waren nur zögerlich oder gegen extremen Aufpreis an dieses Volk. Ausrüstung und andere Dienstleistungen kosten das Doppelte.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349134, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YV9KiRebanh28Jk2" +} diff --git a/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json b/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json new file mode 100644 index 00000000..ef60c834 --- /dev/null +++ b/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json @@ -0,0 +1,71 @@ +{ + "_id": "8RPj5bUguaxQ6RLK", + "name": "Zäh", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "tP2fgQrHbvuZT4eM", + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8RPj5bUguaxQ6RLK.tP2fgQrHbvuZT4eM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Abwehr.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349043, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8RPj5bUguaxQ6RLK" +} diff --git a/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json b/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json new file mode 100644 index 00000000..0551f4eb --- /dev/null +++ b/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json @@ -0,0 +1,71 @@ +{ + "_id": "Du32O8lxUjCTchh4", + "name": "Zäher als sie aussehen", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "rTPqUWomhHvmzLbv", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 1, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft x 2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Du32O8lxUjCTchh4.rTPqUWomhHvmzLbv" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder eines kleinen Volkes können den LK-Malus auf Grund ihrer Größe mit dieser Volksfähigkeit ignorieren.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349048, + "modifiedTime": 1740227862613, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Du32O8lxUjCTchh4" +} diff --git a/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json b/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json new file mode 100644 index 00000000..bdb38a6b --- /dev/null +++ b/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json @@ -0,0 +1,77 @@ +{ + "_id": "V5S2BMm7vWJiD2hD", + "name": "Zielsicher", + "type": "racialAbility", + "img": "icons/svg/aura.svg", + "effects": [ + { + "_id": "YxpZ3gaKzgnl1T7S", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "Schießen, Zielzaubern +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!V5S2BMm7vWJiD2hD.YxpZ3gaKzgnl1T7S" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Fernkampf und Zielzauber.

" + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349115, + "modifiedTime": 1740227862615, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!V5S2BMm7vWJiD2hD" +} diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json new file mode 100644 index 00000000..17cd9d67 --- /dev/null +++ b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json @@ -0,0 +1,28 @@ +{ + "_id": "mVs6A48mWnfV9hcL", + "name": "Alterung (1 Jahr pro Schadenspunkt)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342120, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mVs6A48mWnfV9hcL" +} diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json new file mode 100644 index 00000000..9be8e53e --- /dev/null +++ b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json @@ -0,0 +1,28 @@ +{ + "_id": "e9F812racwKeZPgR", + "name": "Alterung (1 Jahr pro Treffer)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", + "experiencePoints": 1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342096, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e9F812racwKeZPgR" +} diff --git a/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json b/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json new file mode 100644 index 00000000..c8bb97a5 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json @@ -0,0 +1,28 @@ +{ + "_id": "mAWyVCfTFH6JiEIu", + "name": "Anfällig (Erde)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342118, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mAWyVCfTFH6JiEIu" +} diff --git a/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json b/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json new file mode 100644 index 00000000..c2d5c8ee --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json @@ -0,0 +1,28 @@ +{ + "_id": "XhAfEVVoSADC880C", + "name": "Anfällig (Feuer)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342080, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XhAfEVVoSADC880C" +} diff --git a/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json b/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json new file mode 100644 index 00000000..0d87f4ba --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json @@ -0,0 +1,28 @@ +{ + "_id": "aOsmsf7jIK7hU9U8", + "name": "Anfällig (Licht)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342088, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aOsmsf7jIK7hU9U8" +} diff --git a/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json b/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json new file mode 100644 index 00000000..a967a1b0 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json @@ -0,0 +1,28 @@ +{ + "_id": "ImVvi7XqDvf6D2vY", + "name": "Anfällig (Luft)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342055, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ImVvi7XqDvf6D2vY" +} diff --git a/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json b/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json new file mode 100644 index 00000000..009127d8 --- /dev/null +++ b/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json @@ -0,0 +1,28 @@ +{ + "_id": "E5WqX3Em2HOAkP2e", + "name": "Anfällig (Wasser)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342040, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!E5WqX3Em2HOAkP2e" +} diff --git a/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json b/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json new file mode 100644 index 00000000..b7c060b6 --- /dev/null +++ b/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json @@ -0,0 +1,28 @@ +{ + "_id": "rUA7XVCeDkREYfi8", + "name": "Angst (1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342142, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rUA7XVCeDkREYfi8" +} diff --git a/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json b/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json new file mode 100644 index 00000000..28ae9ba7 --- /dev/null +++ b/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json @@ -0,0 +1,28 @@ +{ + "_id": "3LGUHTPC3tbVC13X", + "name": "Angst (2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342010, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3LGUHTPC3tbVC13X" +} diff --git a/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json b/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json new file mode 100644 index 00000000..3997a6e0 --- /dev/null +++ b/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json @@ -0,0 +1,28 @@ +{ + "_id": "blDuh7uVVhaNSUVU", + "name": "Angst (3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342090, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!blDuh7uVVhaNSUVU" +} diff --git a/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json b/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json new file mode 100644 index 00000000..3c889c94 --- /dev/null +++ b/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json @@ -0,0 +1,28 @@ +{ + "_id": "Dt7AvP3fUbOQB4Yn", + "name": "Angst (4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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 -4 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 40 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342037, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Dt7AvP3fUbOQB4Yn" +} diff --git a/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json b/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json new file mode 100644 index 00000000..49a3b726 --- /dev/null +++ b/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json @@ -0,0 +1,28 @@ +{ + "_id": "X3UfX2rmUKDUXmrC", + "name": "Angst (5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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 -5 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342074, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!X3UfX2rmUKDUXmrC" +} diff --git a/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json b/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json new file mode 100644 index 00000000..4ed208f8 --- /dev/null +++ b/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json @@ -0,0 +1,28 @@ +{ + "_id": "oUR6JglLxmJZduZz", + "name": "Antimagie (10 Meter)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342127, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oUR6JglLxmJZduZz" +} diff --git a/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json b/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json new file mode 100644 index 00000000..416c9b91 --- /dev/null +++ b/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json @@ -0,0 +1,28 @@ +{ + "_id": "HMCFkxVzU2b3KkSA", + "name": "Bezaubern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342052, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HMCFkxVzU2b3KkSA" +} diff --git a/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json b/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json new file mode 100644 index 00000000..36fd5126 --- /dev/null +++ b/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json @@ -0,0 +1,28 @@ +{ + "_id": "l4ewILWP2zbiSM97", + "name": "Blickangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342114, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l4ewILWP2zbiSM97" +} diff --git a/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json b/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json new file mode 100644 index 00000000..ee8fe73b --- /dev/null +++ b/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json @@ -0,0 +1,28 @@ +{ + "_id": "75iKq2PTrfyTw0s4", + "name": "Dunkelsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", + "experiencePoints": 7 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342024, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!75iKq2PTrfyTw0s4" +} diff --git a/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json b/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json new file mode 100644 index 00000000..72b255fe --- /dev/null +++ b/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json @@ -0,0 +1,28 @@ +{ + "_id": "uX7wuGyUjOPpYR5W", + "name": "Fliegen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342144, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uX7wuGyUjOPpYR5W" +} diff --git a/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json b/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json new file mode 100644 index 00000000..0265937f --- /dev/null +++ b/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json @@ -0,0 +1,28 @@ +{ + "_id": "ziB3j0RSbWMtq1LX", + "name": "Geistesimmun", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342149, + "modifiedTime": 1740227862515, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ziB3j0RSbWMtq1LX" +} diff --git a/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json b/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json new file mode 100644 index 00000000..addc64eb --- /dev/null +++ b/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json @@ -0,0 +1,28 @@ +{ + "_id": "TY1ZV1YsyaFtfX7U", + "name": "Gift (1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342071, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TY1ZV1YsyaFtfX7U" +} diff --git a/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json b/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json new file mode 100644 index 00000000..ae147a25 --- /dev/null +++ b/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json @@ -0,0 +1,28 @@ +{ + "_id": "jywCKRNCWLQFCFmu", + "name": "Gift (2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 2 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 20 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342111, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jywCKRNCWLQFCFmu" +} diff --git a/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json b/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json new file mode 100644 index 00000000..9b0bd1eb --- /dev/null +++ b/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json @@ -0,0 +1,28 @@ +{ + "_id": "xBZDRJORSen8qcRb", + "name": "Gift (3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 3 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 30 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342147, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xBZDRJORSen8qcRb" +} diff --git a/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json b/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json new file mode 100644 index 00000000..690edf87 --- /dev/null +++ b/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json @@ -0,0 +1,28 @@ +{ + "_id": "fYLkdhA3Xlw2cctC", + "name": "Gift (4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 4 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 40 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342109, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fYLkdhA3Xlw2cctC" +} diff --git a/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json b/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json new file mode 100644 index 00000000..6e81d1ef --- /dev/null +++ b/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json @@ -0,0 +1,28 @@ +{ + "_id": "oTLaMcZOW0eiUZCL", + "name": "Gift (5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 5 nicht abwehrbaren Schadenspunkt pro Runde.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342126, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oTLaMcZOW0eiUZCL" +} diff --git a/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json b/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json new file mode 100644 index 00000000..a651d578 --- /dev/null +++ b/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json @@ -0,0 +1,28 @@ +{ + "_id": "Kbb8qlLeVahzxy5N", + "name": "Kletterläufer", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342058, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Kbb8qlLeVahzxy5N" +} diff --git a/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json b/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json new file mode 100644 index 00000000..3ee68e9d --- /dev/null +++ b/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json @@ -0,0 +1,28 @@ +{ + "_id": "5maJ8tHAVZCxHGW6", + "name": "Lähmungseffekt", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der lähmende Angriff (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342020, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5maJ8tHAVZCxHGW6" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json b/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json new file mode 100644 index 00000000..1abdd377 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json @@ -0,0 +1,28 @@ +{ + "_id": "oDM4ImE7PrIgn22E", + "name": "Mehrere Angriffe (+1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342122, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oDM4ImE7PrIgn22E" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json b/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json new file mode 100644 index 00000000..b68c7d8a --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json @@ -0,0 +1,28 @@ +{ + "_id": "1zPOH37f7Q5Rwodx", + "name": "Mehrere Angriffe (+2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 2 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342007, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1zPOH37f7Q5Rwodx" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json b/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json new file mode 100644 index 00000000..f9a0fe19 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json @@ -0,0 +1,28 @@ +{ + "_id": "LM5xia0xVIlhQsLG", + "name": "Mehrere Angriffe (+3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 3 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342060, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!LM5xia0xVIlhQsLG" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json b/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json new file mode 100644 index 00000000..afe8d126 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json @@ -0,0 +1,28 @@ +{ + "_id": "1JDyMkVOlho7IuiN", + "name": "Mehrere Angriffe (+4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 4 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342005, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1JDyMkVOlho7IuiN" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json b/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json new file mode 100644 index 00000000..eefb2bd0 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json @@ -0,0 +1,28 @@ +{ + "_id": "YvkRgHyCkwhn3uzg", + "name": "Mehrere Angriffe (+5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann 5 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342084, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YvkRgHyCkwhn3uzg" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json new file mode 100644 index 00000000..5566cbd8 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json @@ -0,0 +1,28 @@ +{ + "_id": "Sig4tVDj8zLWZCEP", + "name": "Mehrere Angriffglieder (+1)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 1 zusätzlichem Angriffsglied an, das Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342070, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Sig4tVDj8zLWZCEP" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json new file mode 100644 index 00000000..236b71bd --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json @@ -0,0 +1,28 @@ +{ + "_id": "VvzGK9lxAD7kuowL", + "name": "Mehrere Angriffglieder (+2)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 2 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342073, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VvzGK9lxAD7kuowL" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json new file mode 100644 index 00000000..3ec6159e --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json @@ -0,0 +1,28 @@ +{ + "_id": "8HmrA97ZqN7nEYgm", + "name": "Mehrere Angriffglieder (+3)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 3 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342026, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8HmrA97ZqN7nEYgm" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json new file mode 100644 index 00000000..6513d336 --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json @@ -0,0 +1,28 @@ +{ + "_id": "R6jT1GYF13ZijtM0", + "name": "Mehrere Angriffglieder (+4)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 4 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342066, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R6jT1GYF13ZijtM0" +} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json new file mode 100644 index 00000000..6d71117c --- /dev/null +++ b/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json @@ -0,0 +1,28 @@ +{ + "_id": "e6VuJIL8ocXQDQ2V", + "name": "Mehrere Angriffglieder (+5)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Greift mit 5 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342092, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!e6VuJIL8ocXQDQ2V" +} diff --git a/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json b/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json new file mode 100644 index 00000000..2c503dc0 --- /dev/null +++ b/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json @@ -0,0 +1,28 @@ +{ + "_id": "pJjtHe2Rd0YCa35n", + "name": "Nachtsicht", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342130, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pJjtHe2Rd0YCa35n" +} diff --git a/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json b/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json new file mode 100644 index 00000000..81acb893 --- /dev/null +++ b/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json @@ -0,0 +1,28 @@ +{ + "_id": "YrmJo8dg4CF3lJdH", + "name": "Natürliche Waffen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342082, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YrmJo8dg4CF3lJdH" +} diff --git a/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json b/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json new file mode 100644 index 00000000..d92dfa36 --- /dev/null +++ b/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json @@ -0,0 +1,28 @@ +{ + "_id": "FCxjdPJ1L8EJd0IF", + "name": "Nur durch Magie verletzbar", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342047, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FCxjdPJ1L8EJd0IF" +} diff --git a/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json b/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json new file mode 100644 index 00000000..57d250e4 --- /dev/null +++ b/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json @@ -0,0 +1,28 @@ +{ + "_id": "sDffbUUXg88Vn2Pq", + "name": "Odem", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

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).

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342143, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sDffbUUXg88Vn2Pq" +} diff --git a/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json b/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json new file mode 100644 index 00000000..84e4f3a5 --- /dev/null +++ b/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json @@ -0,0 +1,28 @@ +{ + "_id": "Mh6bLPD3N29ybeLq", + "name": "Regeneration", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", + "experiencePoints": -1 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342062, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Mh6bLPD3N29ybeLq" +} diff --git a/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json b/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json new file mode 100644 index 00000000..24f8b996 --- /dev/null +++ b/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json @@ -0,0 +1,28 @@ +{ + "_id": "oPTuLvZOEsXnRPed", + "name": "Rost", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Treffer reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Kreatur treffen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342124, + "modifiedTime": 1740227862513, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oPTuLvZOEsXnRPed" +} diff --git a/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json b/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json new file mode 100644 index 00000000..2d07c74f --- /dev/null +++ b/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json @@ -0,0 +1,28 @@ +{ + "_id": "5PdSHi6PY4TNV9rP", + "name": "Schleudern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342014, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5PdSHi6PY4TNV9rP" +} diff --git a/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json b/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json new file mode 100644 index 00000000..b50db1e7 --- /dev/null +++ b/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json @@ -0,0 +1,28 @@ +{ + "_id": "rPbbTLUtSXZpdFjp", + "name": "Schwarm", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", + "experiencePoints": 0 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342134, + "modifiedTime": 1740227862514, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rPbbTLUtSXZpdFjp" +} diff --git a/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json b/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json new file mode 100644 index 00000000..65655aaf --- /dev/null +++ b/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json @@ -0,0 +1,28 @@ +{ + "_id": "05D4DdnbcQFoIllF", + "name": "Schweben", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995341997, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!05D4DdnbcQFoIllF" +} diff --git a/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json b/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json new file mode 100644 index 00000000..e898d27a --- /dev/null +++ b/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json @@ -0,0 +1,28 @@ +{ + "_id": "18PDF4gqWrIRWudN", + "name": "Schwimmen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342002, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!18PDF4gqWrIRWudN" +} diff --git a/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json b/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json new file mode 100644 index 00000000..e870e874 --- /dev/null +++ b/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json @@ -0,0 +1,28 @@ +{ + "_id": "BtjiEmhGyje6YghP", + "name": "Sonar", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

„Sieht“ per Sonar.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342035, + "modifiedTime": 1740227862506, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BtjiEmhGyje6YghP" +} diff --git a/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json b/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json new file mode 100644 index 00000000..f7adf23c --- /dev/null +++ b/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json @@ -0,0 +1,28 @@ +{ + "_id": "L0dxlrCY14bLyUdQ", + "name": "Sturmangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342059, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L0dxlrCY14bLyUdQ" +} diff --git a/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json b/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json new file mode 100644 index 00000000..03308c9d --- /dev/null +++ b/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json @@ -0,0 +1,28 @@ +{ + "_id": "eWuQlQYF3VmyR0kt", + "name": "Sturzangriff", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342099, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eWuQlQYF3VmyR0kt" +} diff --git a/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json b/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json new file mode 100644 index 00000000..40380dc5 --- /dev/null +++ b/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json @@ -0,0 +1,78 @@ +{ + "_id": "ZkgZiFI5xy8aevG8", + "name": "Totenkraft", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", + "effects": [ + { + "_id": "xw1OyyTdDwkNe2jC", + "changes": [ + { + "key": "system.traits.strength.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + }, + { + "key": "system.traits.constitution.total", + "mode": 2, + "value": "@system.attributes.mind.total + @system.traits.aura.total", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": {}, + "tint": "#ffffff", + "origin": null, + "name": "GEI + AU als Bonus auf Stärke und Härte", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZkgZiFI5xy8aevG8.xw1OyyTdDwkNe2jC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342086, + "modifiedTime": 1740227862510, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZkgZiFI5xy8aevG8" +} diff --git a/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json b/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json new file mode 100644 index 00000000..899a10c3 --- /dev/null +++ b/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json @@ -0,0 +1,28 @@ +{ + "_id": "AjPsjbxcuNslQEuE", + "name": "Umschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", + "experiencePoints": 10 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342029, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AjPsjbxcuNslQEuE" +} diff --git a/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json b/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json new file mode 100644 index 00000000..75b4fbc0 --- /dev/null +++ b/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json @@ -0,0 +1,28 @@ +{ + "_id": "fY7yRpxhQTIV5G2p", + "name": "Verschlingen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", + "experiencePoints": 25 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342107, + "modifiedTime": 1740227862511, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fY7yRpxhQTIV5G2p" +} diff --git a/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json b/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json new file mode 100644 index 00000000..fbeb17f1 --- /dev/null +++ b/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json @@ -0,0 +1,28 @@ +{ + "_id": "5eB5a0FnygbaqWPe", + "name": "Versteinern", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} aufgehoben werden.

", + "experiencePoints": 50 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342017, + "modifiedTime": 1740227862504, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5eB5a0FnygbaqWPe" +} diff --git a/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json b/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json new file mode 100644 index 00000000..20bb6c72 --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json @@ -0,0 +1,28 @@ +{ + "_id": "602AkdkLqx6NWprb", + "name": "Werteverlust (AGI)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird AGI um 1 gesenkt (bei AGI Null ist das Opfer bewegungsunfähig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342022, + "modifiedTime": 1740227862505, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!602AkdkLqx6NWprb" +} diff --git a/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json b/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json new file mode 100644 index 00000000..35760d98 --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json @@ -0,0 +1,28 @@ +{ + "_id": "m52MTRs1GMXScTki", + "name": "Werteverlust (GEI)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342116, + "modifiedTime": 1740227862512, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!m52MTRs1GMXScTki" +} diff --git a/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json b/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json new file mode 100644 index 00000000..e898b99f --- /dev/null +++ b/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json @@ -0,0 +1,28 @@ +{ + "_id": "RwT0NBwkc1TuAR1e", + "name": "Werteverlust (KÖR)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342068, + "modifiedTime": 1740227862509, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RwT0NBwkc1TuAR1e" +} diff --git a/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json b/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json new file mode 100644 index 00000000..e5ac40b7 --- /dev/null +++ b/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json @@ -0,0 +1,28 @@ +{ + "_id": "R3j1CjXJckUH0CBG", + "name": "Wesen der Dunkelheit (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342064, + "modifiedTime": 1740227862508, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!R3j1CjXJckUH0CBG" +} diff --git a/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json b/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json new file mode 100644 index 00000000..328e04eb --- /dev/null +++ b/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json @@ -0,0 +1,28 @@ +{ + "_id": "KDDlwN9as9B4ljeA", + "name": "Wesen des Lichts (Settingoption)", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", + "experiencePoints": 5 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995342057, + "modifiedTime": 1740227862507, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KDDlwN9as9B4ljeA" +} diff --git a/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json b/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json new file mode 100644 index 00000000..3b2d11b0 --- /dev/null +++ b/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json @@ -0,0 +1,28 @@ +{ + "_id": "02QMKm8MHzz8yAxL", + "name": "Zerstampfen", + "type": "specialCreatureAbility", + "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", + "experiencePoints": 15 + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995341991, + "modifiedTime": 1740227862503, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!02QMKm8MHzz8yAxL" +} diff --git a/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json b/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json new file mode 100644 index 00000000..c0bb02d7 --- /dev/null +++ b/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json @@ -0,0 +1,71 @@ +{ + "_id": "pmYcjLXv1EB9bM59", + "name": "Allheilung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/healing.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber heilt sämtliche Verletzungen und schließt jede noch so große Wunde, ohne Narben zu hinterlassen. Selbst abgetrennte Gliedmaßen (sofern nicht mehr als W20 Stunden abgetrennt) lassen sich mit diesem Spruch wieder anfügen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344883, + "modifiedTime": 1740227862587, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pmYcjLXv1EB9bM59" +} diff --git a/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json b/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json new file mode 100644 index 00000000..f6b819ee --- /dev/null +++ b/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json @@ -0,0 +1,71 @@ +{ + "_id": "VjvrapwDmBvGYmfj", + "name": "Arkanes Schwert", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

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“.

\n

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.

\n

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.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", + "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": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344678, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VjvrapwDmBvGYmfj" +} diff --git a/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json b/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json new file mode 100644 index 00000000..2898b0db --- /dev/null +++ b/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json @@ -0,0 +1,71 @@ +{ + "_id": "QZW2p3k9uGuYKCbN", + "name": "Balancieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/tightrope.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann absolut sicher mit seinem reinen Laufen-Wert über dünne Seile u. ä. balancieren.

\n

Sobald der Zauber gewirkt wurde, gilt der Balancieren-Effekt und endet, nachdem der Charakter eine Strecke in Höhe des eigenen, doppelten Laufen-Wertes in Metern zurückgelegt hat.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Strecke zurückgelegt", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 3, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344604, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QZW2p3k9uGuYKCbN" +} diff --git a/packs/spells/Bannen_VIRaUl51s1vnDHUt.json b/packs/spells/Bannen_VIRaUl51s1vnDHUt.json new file mode 100644 index 00000000..77e97004 --- /dev/null +++ b/packs/spells/Bannen_VIRaUl51s1vnDHUt.json @@ -0,0 +1,71 @@ +{ + "_id": "VIRaUl51s1vnDHUt", + "name": "Bannen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-palm.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber vernichtet feindliche Dämonen, Elementare und Untote im Wirkungsradius. Maximal wird eine Anzahl von Wesenheiten vernichtet, die der halbierten Stufe des Zauberwirkers entspricht. Bei zu vielen Wesenheiten entscheidet der Zufall, welche betroffen sind. Alternativ können auch bestimmte, einzelne Wesenheiten als Ziel des Bannes bestimmt werden. Pro misslungenen Bannversuch steigt die Schwierigkeit um 2.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 der Wesenheit" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 8, + "wizard": 18, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344676, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VIRaUl51s1vnDHUt" +} diff --git a/packs/spells/Blenden_JldAx8a91vVO2wUf.json b/packs/spells/Blenden_JldAx8a91vVO2wUf.json new file mode 100644 index 00000000..1f0d78c1 --- /dev/null +++ b/packs/spells/Blenden_JldAx8a91vVO2wUf.json @@ -0,0 +1,71 @@ +{ + "_id": "JldAx8a91vVO2wUf", + "name": "Blenden", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", + "equipped": false, + "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": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344548, + "modifiedTime": 1740227862566, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JldAx8a91vVO2wUf" +} diff --git a/packs/spells/Blitz_Senq5ub2Cx0agJgi.json b/packs/spells/Blitz_Senq5ub2Cx0agJgi.json new file mode 100644 index 00000000..51b63b77 --- /dev/null +++ b/packs/spells/Blitz_Senq5ub2Cx0agJgi.json @@ -0,0 +1,71 @@ +{ + "_id": "Senq5ub2Cx0agJgi", + "name": "Blitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", + "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": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344630, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Senq5ub2Cx0agJgi" +} diff --git a/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json b/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json new file mode 100644 index 00000000..41996396 --- /dev/null +++ b/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json @@ -0,0 +1,71 @@ +{ + "_id": "GPaDrKIFw2kjzryU", + "name": "Blut kochen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/blood.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Blut des Ziels beginnt auf magische Art und Weise zu kochen, ohne dass es gerinnt.

Der innerlich wirkende Schaden entspricht dem doppelten Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni seiner Gegenstände.

Der Zauber ist gegen Wesen ohne Blut – wie beispielsweise viele Untote – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "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", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 17, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344518, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GPaDrKIFw2kjzryU" +} diff --git a/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json b/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json new file mode 100644 index 00000000..f70733ce --- /dev/null +++ b/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json @@ -0,0 +1,71 @@ +{ + "_id": "wnYRgIjVtIhL26eg", + "name": "Botschaft", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/envelope.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Beauftragt ein geisterhaftes Abbild des Zaubernden bei einem ihm bekannten Wesen in Reichweite zu erscheinen und bis zu VE x 2 Wortsilben zu zitieren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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": "kilometer" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis ausformuliert", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344902, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wnYRgIjVtIhL26eg" +} diff --git a/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json b/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json new file mode 100644 index 00000000..e84cd039 --- /dev/null +++ b/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json @@ -0,0 +1,71 @@ +{ + "_id": "yy43TiBbip28QRhs", + "name": "Dämonen beschwören", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/pentacle.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber beschwört der Zauberwirker einen Dämon aus einer anderen Existenzebene. Der Charakter kann dabei frei wählen, was für eine Dämonenart (@Compendium[ds4.creatures.RxSUSzQBSTFYHOlV]{Niederer Dämon}, @Compendium[ds4.creatures.LtsbT2DHYKs9Catm]{Hoher Dämon}, @Compendium[ds4.creatures.LgtcLrKtCa496ih6]{Kampfdämon}, @Compendium[ds4.creatures.JGpIh3oCK1Vx3NnZ]{Kriegsdämon},@Compendium[ds4.creatures.PKPmkOMLDGwS9QZJ]{Dämonenfürst}, DS4 S. 107-108) er beschwören will und ob die Kreatur fliegen können soll (was ihre Beschwörung aber auch erschwert). Alle Dämonen hassen die niederen Wesen, die es wagen, sie zu beschwören, können ihnen bei einer erfolgreichen Beschwörung aber nichts anhaben. Beschworene Dämonen können nur jemanden angreifen, wenn ihr Beschwörer es ihnen befiehlt oder sie selbst angegriffen werden.

\n

Aufträge: Ein Dämon kann erst auf seine Existenzebene zurückkehren, wenn er für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen VE ausgeführt hat (Dämonen verstehen immer die Sprache ihres Beschwörers).

\n

Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Folge der Straße bis zur nächsten Ortschaft (Auftrag 1) und vernichte jeden, dem Du unterwegs begegnest (Auftrag 2).“

\n

Wird der Dämon von seinem Beschwörer vor Ablauf der Zauberdauer (VE x 2 Stunden) entlassen oder hat er alle seine Aufträge erfüllt, kehrt er augenblicklich zurück auf seine Existenzebene.

\n

Beschwörungskreise: Um einen Dämon zu beschwören, wird immer ein Beschwörungskreis benötigt. Dieser kann hastig auf den Boden gekritzelt oder in langen Stunden aufwendig gezeichnet werden.

\n

Je mehr Arbeit in einem Beschwörungskreis steckt, desto eher gelingt die Beschwörung: Jeder Beschwörungskreis verfügt über einen Beschwörenbonus (BB), der die Zaubern-Probe beim Beschwören erleichtert.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Beschwörungskreis zeichnenBB
Innerhalb 1 Kampfrunde gekritzelt-2
Innerhalb weniger Minuten gefertigt+0
Pro Zeichenstunde (max. VE Stunden)+1
Mit Blut gezeichnet+2
Nachts gezeichnet+2
13 brennende Kerzen auf Kreis stellen+1
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Weitere Modifikatoren (Kreis nötig)BB
Bestimmter Dämon (Name bekannt)+2
Dämon soll fliegen können-KÖR / 2*
Singsang zum Ende (max. VE / 2 Rd.)+1 / Rd.
Todesopfer (intelligentes Wesen)+KÖR**
\n

*: KÖR des Dämonen
**: KÖR des Opfers

\n

Beispiel:
Ein hoher Dämon (KÖR 7 AU 3 = ZB -10), der zudem auch noch fliegen können soll (KÖR 7 / 2 = 3,5, aufgerundet zu 4), würde die Zaubern-Probe um -14 erschweren.

\n

Ein Beschwörer mit VE 8 könnte, um diesen Malus zu reduzieren, maximal 8 Stunden (+8) in der Nacht (+2) den Beschwörungskreis zeichnen und 13 Kerzen ringsum entzünden (+2).

\n

Würde er die ihm möglichen 4 Kampfrunden (VE / 2) vor der eigentlichen Beschwörung noch einen Singsang anstimmen, wäre der endgültige ZB sogar +2 (= -14 + 8 + 2 + 2 + 4).

\n

Misslungenes Beschwören: Ein Dämon wird auch beschworen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Beschwörers und kann frei handeln. Ein fehlerhaft beschworener Dämon hat nur ein Ziel vor Augen: Augenblicklich seinen Beschwörer zu vernichten, wodurch er wieder auf seine Existenzebene zurückkehren kann (ansonsten müsste er die Zauberdauer abwarten, ein inakzeptabler Zustand).

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU) des Dämonen und +BB" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": true, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 17, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344906, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yy43TiBbip28QRhs" +} diff --git a/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json b/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json new file mode 100644 index 00000000..f07f65ee --- /dev/null +++ b/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json @@ -0,0 +1,71 @@ +{ + "_id": "A9c19uUSIH4kvvHS", + "name": "Duftnote", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fragrance.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel wird vom Zauberwirker mit einem Duft versehen.

Dieser Geruch kann angenehm oder unangenehm sein und erleichtert bzw. erschwert sämtliche sozialen Proben des Ziels für die Wirkungsdauer um 2.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344482, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!A9c19uUSIH4kvvHS" +} diff --git a/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json b/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json new file mode 100644 index 00000000..342efbc1 --- /dev/null +++ b/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json @@ -0,0 +1,71 @@ +{ + "_id": "yHUqMy4NoAtu9Tnh", + "name": "Durchlässig", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/icicles-aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker wird mit samt seiner getragenen Ausrüstung durchlässig und kann für VE/2 Kampfrunden durch nichtmagische, unbelebte Objekte schreiten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE/2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344905, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yHUqMy4NoAtu9Tnh" +} diff --git a/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json b/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json new file mode 100644 index 00000000..95170f40 --- /dev/null +++ b/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json @@ -0,0 +1,71 @@ +{ + "_id": "eNefaoD15JrT4ixR", + "name": "Durchsicht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sunglasses.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann durch nichtmagische, unbelebte Objekte VE/2 Meter weit sehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 7, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344798, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eNefaoD15JrT4ixR" +} diff --git a/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json b/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json new file mode 100644 index 00000000..9bd3b0be --- /dev/null +++ b/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json @@ -0,0 +1,71 @@ +{ + "_id": "MKlGqhjQa3GZu4gq", + "name": "Ebenentor", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -8, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 18, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344563, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MKlGqhjQa3GZu4gq" +} diff --git a/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json b/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json new file mode 100644 index 00000000..211d95d8 --- /dev/null +++ b/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json @@ -0,0 +1,71 @@ +{ + "_id": "CrZ8L7oaWvPjLou0", + "name": "Einschläfern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344499, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!CrZ8L7oaWvPjLou0" +} diff --git a/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json b/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json new file mode 100644 index 00000000..f0ad18e2 --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json @@ -0,0 +1,71 @@ +{ + "_id": "9GBDoyVXPXjWoLix", + "name": "Elementar herbeirufen (Erde)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Erdelementar von seiner Ebene herbei. Erdelementare (@Compendium[ds4.creatures.1PYYg60DHC6RA3oO]{Erdelementar I}, @Compendium[ds4.creatures.S8DNL5XpmNRSNJhD]{Erdelementar II}, @Compendium[ds4.creatures.mOQ21HFNisTfu7ve]{Erdelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Erdboden/Kiesel/SandI
Felsen/FindlingII
Steinhügel oder größerIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Erde/Gestein+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344476, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9GBDoyVXPXjWoLix" +} diff --git a/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json b/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json new file mode 100644 index 00000000..f38896ea --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json @@ -0,0 +1,71 @@ +{ + "_id": "8BT2TqPHC0v2OzNe", + "name": "Elementar herbeirufen (Feuer)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Feuerelementar von seiner Ebene herbei. Feuerelementare (@Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementar I}, @Compendium[ds4.creatures.huPL6cx3RadJNhL0]{Feuerelementar II}, @Compendium[ds4.creatures.mPcmJ9nHpy1AbKVr]{Feuerelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Kerzenflamme bis FackelI
LagerfeuerII
Brand/LavaIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Feuer-/Lavafläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "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", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344471, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8BT2TqPHC0v2OzNe" +} diff --git a/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json b/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json new file mode 100644 index 00000000..622eafb2 --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json @@ -0,0 +1,71 @@ +{ + "_id": "PXIVHRBpLwlzrk3L", + "name": "Elementar herbeirufen (Luft)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Luftelementar von seiner Ebene herbei. Luftlementare (@Compendium[ds4.creatures.CIzMY691MK016h4E]{Luftelementar I}, @Compendium[ds4.creatures.wYVw1a5UjPS09YxS]{Luftelementar II}, @Compendium[ds4.creatures.DNbOkqUg7jitTTbw]{Luftelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Leichte Brise/Windiges WetterI
StürmischII
GewittersturmIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Luft+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "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", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344601, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PXIVHRBpLwlzrk3L" +} diff --git a/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json b/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json new file mode 100644 index 00000000..0953430a --- /dev/null +++ b/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json @@ -0,0 +1,71 @@ +{ + "_id": "ftDPIhLCVRLRpOix", + "name": "Elementar herbeirufen (Wasser)", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber ruft ein Wasserelementar von seiner Ebene herbei. Wasserelementare (@Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementar I}, @Compendium[ds4.creatures.Xn7g2PB1rXvllwRi]{Wasserelementar II}, @Compendium[ds4.creatures.dlrDPQ3is4NkzZJB]{Wasserelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Wasser: Pfütze/Regen/WassertonneI
Wasser: Brunnen/Teich/Weiher o.ä.II
Wasser: Fluss/Meer/SeeIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Wasserfläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-Elementarstufe x 5" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344817, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ftDPIhLCVRLRpOix" +} diff --git a/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json b/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json new file mode 100644 index 00000000..a26dc5d1 --- /dev/null +++ b/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json @@ -0,0 +1,71 @@ +{ + "_id": "4R2OiLe4Ojht69Ea", + "name": "Erdspalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/earth-spit.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf festem Boden öffnet der Zauber einen Erdspalt. Der Erdspalt ist bis zu VE in Meter breit und VE/2 in Metern lang und tief. Stehen Wesen an der Stelle, unter der der Erdspalt erscheint, können sie mit AGI+BE augenblicklich versuchen, noch in Sicherheit zu springen (zählt als freie Aktion). Wesen, die sich in der Erdspalte befinden, wenn diese sich wieder schließt, erhalten augenblicklich 2W20 nicht abwehrbaren Schaden und sind – ohne noch richtig atmen zu können – eingeschlossen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "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": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": 10, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344451, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4R2OiLe4Ojht69Ea" +} diff --git a/packs/spells/Federgleich_eYy2tF4LpHth18t6.json b/packs/spells/Federgleich_eYy2tF4LpHth18t6.json new file mode 100644 index 00000000..d4759ed3 --- /dev/null +++ b/packs/spells/Federgleich_eYy2tF4LpHth18t6.json @@ -0,0 +1,71 @@ +{ + "_id": "eYy2tF4LpHth18t6", + "name": "Federgleich", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-feathers.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – kann aus einer Höhe gleich dem doppelten Probenergebniss in Metern sanft wie ein Feder ungelenkt zu Boden gleiten (1 m pro Kampfrunde).

\n

Der federgleiche Fall muss spätestens 1 Minute, nachdem der Zauber gewirkt wurde, begonnen werden, sonst verfällt sein Effekt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1 Min & bis Distanz gefallen", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 5, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344808, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eYy2tF4LpHth18t6" +} diff --git a/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json b/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json new file mode 100644 index 00000000..639326aa --- /dev/null +++ b/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json @@ -0,0 +1,71 @@ +{ + "_id": "AyTRXMB9PBeVsmus", + "name": "Feueratem", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-breath.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aus dem Mund des Zauberwirkers schießt eine lodernde Säule, die alle hintereinander stehenden Gegner in einer 1 m breiten, geraden Schneise in Flammen hüllt. Der feurige Atem verursacht nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344487, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AyTRXMB9PBeVsmus" +} diff --git a/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json b/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json new file mode 100644 index 00000000..68cf1fa3 --- /dev/null +++ b/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json @@ -0,0 +1,71 @@ +{ + "_id": "ifRUXwqnjd1SCcRG", + "name": "Feuerball", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-tail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen flammenden Ball auf seine Gegner, der in einer feurigen Explosion – ihr Radius entspricht der VE des Zauberwirkers in Metern – endet, welche nicht abwehrbaren Schaden in Höhe des Probenergebnisses verursacht.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344864, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ifRUXwqnjd1SCcRG" +} diff --git a/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json b/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json new file mode 100644 index 00000000..adf103ce --- /dev/null +++ b/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json @@ -0,0 +1,71 @@ +{ + "_id": "QuuHhHmliyC5N55q", + "name": "Feuerlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.kudkdrpMU0C83vM7]{Feuerstrahl}.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "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": "0r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344608, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QuuHhHmliyC5N55q" +} diff --git a/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json b/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json new file mode 100644 index 00000000..47391424 --- /dev/null +++ b/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json @@ -0,0 +1,71 @@ +{ + "_id": "kudkdrpMU0C83vM7", + "name": "Feuerstrahl", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "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 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344868, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kudkdrpMU0C83vM7" +} diff --git a/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json b/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json new file mode 100644 index 00000000..6511f384 --- /dev/null +++ b/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json @@ -0,0 +1,71 @@ +{ + "_id": "7yYxjxuGjTo29r10", + "name": "Feuerwand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/firewall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker lässt eine Feuerwand erscheinen, die Ausmaße von maximal 1 m x VE m x VE m annehmen kann. Wesen, die an der Stelle stehen, wo die Feuerwand erscheint, oder durch sie hindurch springen, erhalten 2W20 abwehrbaren Schaden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344467, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7yYxjxuGjTo29r10" +} diff --git a/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json b/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json new file mode 100644 index 00000000..62b58617 --- /dev/null +++ b/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json @@ -0,0 +1,71 @@ +{ + "_id": "5RUGIWTftCyeJkDQ", + "name": "Flackern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/duality.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker beginnt zu flackern und ist dadurch schwieriger zu treffen. Seine Abwehr wird für die Dauer des Zaubers um seinen halbierten Wert in GEI erhöht (nur nicht gegen alles einhüllenden Flächenschaden).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 2, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344456, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5RUGIWTftCyeJkDQ" +} diff --git a/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json b/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json new file mode 100644 index 00000000..70ce25b3 --- /dev/null +++ b/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json @@ -0,0 +1,71 @@ +{ + "_id": "7ybmodIkWDP1z1D6", + "name": "Flammeninferno", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 10", + "unit": "meter" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344469, + "modifiedTime": 1740227862559, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7ybmodIkWDP1z1D6" +} diff --git a/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json b/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json new file mode 100644 index 00000000..f97ee591 --- /dev/null +++ b/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json @@ -0,0 +1,71 @@ +{ + "_id": "gJ3Z8y7i6LWjSMKJ", + "name": "Flammenklinge", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shard-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann eine Metallklinge in lodernde Flammen hüllen. Dabei handelt es sich um ein magisches Feuer, das keinen Sauerstoff benötigt und dessen Flammenfarbe der Zauberwirker frei bestimmen kann.

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Ein Immersieg bei einem Angriff erzeugt eine kleine Explosion, wodurch der erwürfelte Schaden in dieser Kampfrunde um zusätzliche W20 erhöht wird.

\n

Flammenklinge ist nicht mit @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} kombinierbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": true, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344829, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gJ3Z8y7i6LWjSMKJ" +} diff --git a/packs/spells/Fliegen_NwLeietvcarS6zP5.json b/packs/spells/Fliegen_NwLeietvcarS6zP5.json new file mode 100644 index 00000000..1c60547a --- /dev/null +++ b/packs/spells/Fliegen_NwLeietvcarS6zP5.json @@ -0,0 +1,71 @@ +{ + "_id": "NwLeietvcarS6zP5", + "name": "Fliegen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hand-wing.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann fliegen. Die Fortbewegungsgeschwindigkeit ist im Flug doppelt so hoch wie am Boden (zusätzlich kann man sie wie beim „Rennen“ verdoppeln). Ein Charakter mit Laufen 4,5 m fliegt also 9 m in einer Kampfrunde, „rennend“ 18 m.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 20, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344588, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NwLeietvcarS6zP5" +} diff --git a/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json b/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json new file mode 100644 index 00000000..27f821ec --- /dev/null +++ b/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json @@ -0,0 +1,71 @@ +{ + "_id": "DjvQzdWEmm8h7G4X", + "name": "Fluch", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/voodoo-doll.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker benötigt etwas vom Ziel in seinem Besitz, wie beispielsweise ein Haar, ein Kleidungsstück o. ä., das beim Zaubern – ob erfolgreich oder nicht – zerstört wird. Das Ziel wird verflucht und erhält auf alle Proben -2, bis die Zauberdauer verstrichen ist oder der Fluch mittels @Compendium[ds4.spells.tBWEyulMfJFzPuWM]{Magie bannen} schon vorher entfernt wird.

\n

Ein Ziel kann mehrmals verflucht werden. Alle Flüche müssen einzeln gebannt werden, stammen sie nicht vom selben Zauberwirker.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziel" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "days" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344510, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DjvQzdWEmm8h7G4X" +} diff --git a/packs/spells/Freund_NcK7zXn0IeCfqjkl.json b/packs/spells/Freund_NcK7zXn0IeCfqjkl.json new file mode 100644 index 00000000..28a05b94 --- /dev/null +++ b/packs/spells/Freund_NcK7zXn0IeCfqjkl.json @@ -0,0 +1,71 @@ +{ + "_id": "NcK7zXn0IeCfqjkl", + "name": "Freund", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/lovers.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg hält das Ziel den Zauberwirker (und nur ihn!) für einen sehr guten Freund.

\n

Das Ziel wird ihm alles anvertrauen, was er auch einem sehr guten Freund verraten würde und alles für ihn machen, was er auch für einen guten Freund tun würde.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 6, + "wizard": 7, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344584, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NcK7zXn0IeCfqjkl" +} diff --git a/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json b/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json new file mode 100644 index 00000000..5a20bb5f --- /dev/null +++ b/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json @@ -0,0 +1,71 @@ +{ + "_id": "iH2NtsJtMfG0ZAU3", + "name": "Frostschock", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 3, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "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": "10r", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 16 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344862, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iH2NtsJtMfG0ZAU3" +} diff --git a/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json b/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json new file mode 100644 index 00000000..68de2765 --- /dev/null +++ b/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json @@ -0,0 +1,71 @@ +{ + "_id": "Gc5G9kixOqNbuwp1", + "name": "Frostwaffe", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sparkling-sabre.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann eine Waffe in eisige Kälte hüllen. Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Ein Immersieg bei einem Angriff friert den Gegner für eine Kampfrunde lang ein, als wirke auf ihn der Zauber @Compendium[ds4.spells.1hhpEYpQQ0oLNptl]{Halt}. Frostwaffe ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kombinierbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": true, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344526, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Gc5G9kixOqNbuwp1" +} diff --git a/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json b/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json new file mode 100644 index 00000000..a13f5270 --- /dev/null +++ b/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json @@ -0,0 +1,71 @@ +{ + "_id": "tZJoj1PGrRGe9eMV", + "name": "Gasgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 5", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344896, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tZJoj1PGrRGe9eMV" +} diff --git a/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json b/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json new file mode 100644 index 00000000..ddc764a0 --- /dev/null +++ b/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json @@ -0,0 +1,71 @@ +{ + "_id": "MpqPWr2l8qV4oQyL", + "name": "Geben und Nehmen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/heart-inside.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers erhält 50 % des Schadens, den es per Schlagen im Nahkampf verursacht (also abzüglich des Abwehrwurfs des Gegners), in Form von heilender Magie auf die eigene Lebenskraft gutgeschrieben.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344567, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MpqPWr2l8qV4oQyL" +} diff --git a/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json b/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json new file mode 100644 index 00000000..537a1763 --- /dev/null +++ b/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json @@ -0,0 +1,71 @@ +{ + "_id": "wZYElRaDmhqgzUvQ", + "name": "Gehorche", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344901, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wZYElRaDmhqgzUvQ" +} diff --git a/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json b/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json new file mode 100644 index 00000000..f8235480 --- /dev/null +++ b/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json @@ -0,0 +1,71 @@ +{ + "_id": "ONhSaLNmvvacgCjA", + "name": "Giftbann", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/foamy-disc.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Neutralisiert augenblicklich ein nichtmagisches Gift, sofern es noch nicht zu spät ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 3, + "wizard": 6, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344594, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ONhSaLNmvvacgCjA" +} diff --git a/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json b/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json new file mode 100644 index 00000000..c17efbc3 --- /dev/null +++ b/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json @@ -0,0 +1,71 @@ +{ + "_id": "lSIJsq1WJbNTpV9F", + "name": "Giftschutz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält einen Bonus auf Abwehr-Proben gegen Gifte in Höhe der Stufe des Zauberwirkers. Der alleinige Bonus (ohne den normalen Abwehr-Wert) wirkt auch gegen Gifte, bei denen normalerweise keine Abwehr erlaubt ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 2, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344871, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lSIJsq1WJbNTpV9F" +} diff --git a/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json b/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json new file mode 100644 index 00000000..d75163f7 --- /dev/null +++ b/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json @@ -0,0 +1,71 @@ +{ + "_id": "919AW6tITRT8WikD", + "name": "Glühender Glaube", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/glowing-hands.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die berührte Waffe – das Ziel des Zaubers – erglüht vor heiliger Kraft. Für die Wirkungsdauer des Zaubers gilt der mit der Waffe verursachte Schaden als magisch und der WB wird um VE/2 erhöht, während die Abwehr getroffener Gegner gegen Angriffe mit dieser Waffe um VE/2 gesenkt wird.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "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": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 6, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344475, + "modifiedTime": 1740227862560, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!919AW6tITRT8WikD" +} diff --git a/packs/spells/Halt_1hhpEYpQQ0oLNptl.json b/packs/spells/Halt_1hhpEYpQQ0oLNptl.json new file mode 100644 index 00000000..92163e90 --- /dev/null +++ b/packs/spells/Halt_1hhpEYpQQ0oLNptl.json @@ -0,0 +1,71 @@ +{ + "_id": "1hhpEYpQQ0oLNptl", + "name": "Halt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/halt.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg kann sich das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, nicht mehr bewegen.

\n

Die Starre endet vorzeitig, sollte das Ziel Schaden erhalten. Während der Starre ist es dem Ziel möglich, die Augen zu bewegen, zu atmen und klar zu denken. Ein erstarrter Zauberwirker könnte also immer noch seine Zauber wechseln oder gar versuchen, ohne Worte und Gesten (DS4 S. 47) einen Zauber zu wagen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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": "VE", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 6, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344449, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1hhpEYpQQ0oLNptl" +} diff --git a/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json b/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json new file mode 100644 index 00000000..7958892d --- /dev/null +++ b/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json @@ -0,0 +1,71 @@ +{ + "_id": "htK3mzAMFbTwYRTR", + "name": "Heilbeeren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/cherry.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Heiler benötigt frische Beeren, kleine Nüsse, schmackhafte Blätter o. ä. für diesen Zauber. Insgesamt wird von ihnen eine Anzahl gleich dem Probenergebnis (bei Druiden x 2) mit einem Heileffekt versehen: Jede Heilbeere heilt augenblicklich 1 LK (pro Aktion können bis zu 10 Heilbeeren verzehrt werden). Die Heilbeeren verlieren nach VE Tagen ihre Wirkung, oder wenn der Heiler den Zauber erneut anwendet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": 10, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344856, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!htK3mzAMFbTwYRTR" +} diff --git a/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json b/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json new file mode 100644 index 00000000..f58cb2e8 --- /dev/null +++ b/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json @@ -0,0 +1,71 @@ +{ + "_id": "pFPofa4TEi69slEy", + "name": "Heilende Aura", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/beams-aura.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Heiler und alle seine Gefährten in einem Radius von VE in Metern erhalten 1 LK jede Kampfrunde geheilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "VE", + "unit": "meter" + }, + "duration": { + "value": "Prb x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344880, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pFPofa4TEi69slEy" +} diff --git a/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json b/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json new file mode 100644 index 00000000..9e58d5c9 --- /dev/null +++ b/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json @@ -0,0 +1,71 @@ +{ + "_id": "FJE2X2GXFDs9LT7J", + "name": "Heilende Hand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/health-normal.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Durch Hand auflegen wird bei dem Ziel Lebenskraft in Höhe des Probenergebnisses geheilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 1, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berührung", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344515, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FJE2X2GXFDs9LT7J" +} diff --git a/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json b/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json new file mode 100644 index 00000000..9144ad00 --- /dev/null +++ b/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json @@ -0,0 +1,71 @@ +{ + "_id": "4StILfq4zNUWBAgz", + "name": "Heilende Strahlen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sinusoidal-beam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Lichtstrahlen schießen vom Heiler aus und heilen die Wunden von bis zu VE/2 Gefährten, die Lebenskraft in Höhe des Probenergebnisses dazu erhalten. Es wird nur eine Probe für diesen Zielzauber gewürfelt: Einzig der Distanzmalus (DS4 S. 43) des Ziels, das am weitesten entfernt steht, wird als Malus gewertet.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "2r", + "minimumLevels": { + "healer": 12, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344453, + "modifiedTime": 1740227862556, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4StILfq4zNUWBAgz" +} diff --git a/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json b/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json new file mode 100644 index 00000000..745c7986 --- /dev/null +++ b/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json @@ -0,0 +1,71 @@ +{ + "_id": "HWjB5kPr3AZbFOFZ", + "name": "Heilendes Feld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/chained-heart.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber heilt bei allen Gefährten im Wirkungsradius die Lebenskraft um das Probenergebnis.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 18, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344535, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HWjB5kPr3AZbFOFZ" +} diff --git a/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json b/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json new file mode 100644 index 00000000..9a6495fb --- /dev/null +++ b/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json @@ -0,0 +1,71 @@ +{ + "_id": "9VLNUomSaxPTdfZY", + "name": "Heilendes Licht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sunbeams.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein vom Heiler ausgehender Lichtstrahl heilt die Lebenskraft des Ziels in Höhe des Probenergebnisses.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "2r", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344478, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9VLNUomSaxPTdfZY" +} diff --git a/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json b/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json new file mode 100644 index 00000000..4a17240a --- /dev/null +++ b/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json @@ -0,0 +1,71 @@ +{ + "_id": "QzcgykKQKztABe2a", + "name": "Heiliger Hammer", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/hammer-drop.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Hammer aus hellem Licht erscheint innerhalb eines Radius von VE in Metern um den Heiler herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft er völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos des Zauberwirkers wie „Halte den Dämon auf“ oder „Helfe dem Paladin“.

\n

Bewegt sich der Charakter, wandert der Wirkungsbereich des Hammers mit ihm mit, so dass die heilige Waffe niemals mehr als VE x 2 in Metern von ihm entfernt sein kann. Der heilige Hammer verschwindet, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer abgelaufen ist.

\n

Sämtliche Kampfwerte des heiligen Hammers entsprechen der Stufe des Heilers +8. Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Heilers entspricht.

", + "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 x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344613, + "modifiedTime": 1740227862571, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QzcgykKQKztABe2a" +} diff --git a/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json b/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json new file mode 100644 index 00000000..0c75f92f --- /dev/null +++ b/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json @@ -0,0 +1,71 @@ +{ + "_id": "apMuLg0knKnmC2Wv", + "name": "Körperexplosion", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mine-explosion.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauber versucht das Ziel zur Explosion zu bringen. Der verursachte Schaden entspricht dem vierfachen Probenergebnis, das Ziel würfelt Abwehr ohne Panzerungsboni von Gegenständen.

\n

Der Zauber ist gegen körperlose Wesen – wie beispielsweise @Compendium[ds4.creatures.cE5kI3uqXWQrCaI5]{Geister} – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "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", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344714, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!apMuLg0knKnmC2Wv" +} diff --git a/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json b/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json new file mode 100644 index 00000000..35d054f0 --- /dev/null +++ b/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json @@ -0,0 +1,71 @@ +{ + "_id": "gePnhgqnsmdEbj3Z", + "name": "Kettenblitz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", + "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": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 16, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344849, + "modifiedTime": 1740227862583, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gePnhgqnsmdEbj3Z" +} diff --git a/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json b/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json new file mode 100644 index 00000000..3148f2ff --- /dev/null +++ b/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json @@ -0,0 +1,71 @@ +{ + "_id": "dt2E4g7iwVqTSlMl", + "name": "Kleiner Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/dread.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der halbierten Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren. Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 2, + "wizard": 6, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344750, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dt2E4g7iwVqTSlMl" +} diff --git a/packs/spells/Kontrollieren_9gc1CF70165NXymH.json b/packs/spells/Kontrollieren_9gc1CF70165NXymH.json new file mode 100644 index 00000000..926f081e --- /dev/null +++ b/packs/spells/Kontrollieren_9gc1CF70165NXymH.json @@ -0,0 +1,71 @@ +{ + "_id": "9gc1CF70165NXymH", + "name": "Kontrollieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis erlöst", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344481, + "modifiedTime": 1740227862561, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9gc1CF70165NXymH" +} diff --git a/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json b/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json new file mode 100644 index 00000000..adeedc8d --- /dev/null +++ b/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json @@ -0,0 +1,71 @@ +{ + "_id": "WkZBOsMblhcrPRUF", + "name": "Lauschen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/human-ear.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann sein Hörzentrum an einen bis zu VE x 5 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt) und vernimmt dadurch alles, was dort zu hören ist, als würde er sich dort befinden.

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück des Belauschten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro 10 m Entfernung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 6, + "wizard": 2, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344685, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WkZBOsMblhcrPRUF" +} diff --git a/packs/spells/Licht_L4pdDXSYAOgtWIbd.json b/packs/spells/Licht_L4pdDXSYAOgtWIbd.json new file mode 100644 index 00000000..2e73dc39 --- /dev/null +++ b/packs/spells/Licht_L4pdDXSYAOgtWIbd.json @@ -0,0 +1,71 @@ +{ + "_id": "L4pdDXSYAOgtWIbd", + "name": "Licht", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/explosion-rays.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das berührte, leblose Ziel – beipielsweise ein Stab oder eine kleine, abdeckbare Münze – leuchtet fackelhell auf.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 5, + "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": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344558, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L4pdDXSYAOgtWIbd" +} diff --git a/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json b/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json new file mode 100644 index 00000000..bbdcedfd --- /dev/null +++ b/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json @@ -0,0 +1,71 @@ +{ + "_id": "1b32mq9AWEMuoBAs", + "name": "Lichtlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sun-spear.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.lj8NQ5l4wLWmYcEt]{Lichtpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 10, + "wizard": 12, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344448, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1b32mq9AWEMuoBAs" +} diff --git a/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json b/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json new file mode 100644 index 00000000..95e3d9b3 --- /dev/null +++ b/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json @@ -0,0 +1,71 @@ +{ + "_id": "lj8NQ5l4wLWmYcEt", + "name": "Lichtpfeil", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/middle-arrow.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "air": false, + "transport": false, + "damage": true, + "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": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 2, + "wizard": 5, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344872, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lj8NQ5l4wLWmYcEt" +} diff --git a/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json b/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json new file mode 100644 index 00000000..57e14134 --- /dev/null +++ b/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json @@ -0,0 +1,71 @@ +{ + "_id": "6bptWPrq5gkX2UaT", + "name": "Lichtsäule", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/laser-precision.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.6bptWPrq5gkX2UaT]{Lichtsäule}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe der Lichtsäule.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 8, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": true, + "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": 16, + "wizard": 19, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344460, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6bptWPrq5gkX2UaT" +} diff --git a/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json b/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json new file mode 100644 index 00000000..3a1e61be --- /dev/null +++ b/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json @@ -0,0 +1,71 @@ +{ + "_id": "tBWEyulMfJFzPuWM", + "name": "Magie bannen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/magic-swirl.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bannt permanent einen Zauberspruch oder magischen Effekt. Die Probe wird durch die Stufe des Wesens, welches den Zauber wirkte, gemindert.

\n

Versucht man den Zauberspruch gegen ein magisches Wesen (worunter auch Zauberwirker fallen) anzuwenden, gilt dessen halbierte LK als Malus auf die Probe. Bei einem Erfolg wird das Ziel aber nicht automatisch gebannt, sondern erhält nicht abwehrbaren Schaden in Höhe des doppelten Probenergebnisses. Stirbt das Ziel, verschwindet es spurlos samt seiner getragenen Ausrüstung.

\n

Sollte der bannende Charakter die Probe jedoch nicht schaffen, kann er selbst zum Ziel des Zaubers werden: Der Zauberwirker würfelt augenblicklich und aktionsfrei erneut den Zauber – allerdings ist er diesmal selbst das Ziel. Alle angewendeten, verstärkenden Zaubereffekte (beispielsweise durch Talente), gelten auch bei diesem zweiten Wurf.

\n

Die gleiche Prozedur kommt zur Anwendung, wenn der Zauberwirker versucht, den magischen Effekt eines Gegenstandes zu bannen. Der ZB-Malus bei Gegenständen entspricht dabei der Stufesumme all derjenigen, die diesen Gegenstand erschufen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "- Wirkerstufe bzw. -LK / 2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 12, + "wizard": 7, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344893, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tBWEyulMfJFzPuWM" +} diff --git a/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json b/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json new file mode 100644 index 00000000..8f8d8e53 --- /dev/null +++ b/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json @@ -0,0 +1,71 @@ +{ + "_id": "d1PUhzL8wuBe3mTl", + "name": "Magie entdecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Scheitert ein Zauberwirker, die Magie einer Örtlichkeit, eines Objektes oder eines Wesen zu erspüren (DS4 S. 47), kann er sämtliche Magie im Wirkungsbreich – nur für ihn sichtbar – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, sofern sie nicht verborgen ist (unter einem Umhang, in einer Truhe usw.).

\n

Betrachtet man Zauberwirker, leuchten diese ebenfalls kurz auf, je heller, desto mächtiger ist die Magie in ihnen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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 x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344738, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!d1PUhzL8wuBe3mTl" +} diff --git a/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json b/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json new file mode 100644 index 00000000..555741ba --- /dev/null +++ b/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json @@ -0,0 +1,71 @@ +{ + "_id": "pUhIT77TSIDrv9Pi", + "name": "Magie identifizieren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-axe.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Offenbart dem Zauberwirker die Quelle und/oder Funktion der Magie eines Objektes oder einer Örtlichkeit.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 5, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344882, + "modifiedTime": 1740227862587, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pUhIT77TSIDrv9Pi" +} diff --git a/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json b/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json new file mode 100644 index 00000000..8b7e8bbc --- /dev/null +++ b/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json @@ -0,0 +1,71 @@ +{ + "_id": "KhmJCaFuP7Tgdw7q", + "name": "Magische Barriere", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/stone-wall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft ein unbewegliches, würfelförmiges Kraftfeld mit einer Größe von maximal VE/2 m³, welches sämtliche Magie- und Zaubersprucheffekte nach innen und außen hin komplett abblockt. Weder @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerbälle}, noch @Compendium[ds4.spells.WkZBOsMblhcrPRUF]{Lauschen}- oder @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport}-Zauber können diese magische Barriere durchbrechen.

\n

Die magische Barriere verschwindet, sofern der Zauerwirker sie nicht – nach Ablauf der Spruchdauer – durch ununterbrochene Konzentration (zählt als ganze Aktion) aufrecht erhält.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE min oder Konzentration", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 14, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344555, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KhmJCaFuP7Tgdw7q" +} diff --git a/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json b/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json new file mode 100644 index 00000000..2761314d --- /dev/null +++ b/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json @@ -0,0 +1,71 @@ +{ + "_id": "ZdlsX5F803JJEat6", + "name": "Magische Rüstung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-mail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die Lebenskraft des Charakters erhöht sich um das Wurfergebnis. Erhält der Zauberwirker Schaden, kostet ihn das zuerst immer die (nicht heilbare) Lebenskraft der magischen Rüstung, bevor es an die eigene Lebenskraft geht. Die LK der magischen Rüstung bleiben erhalten, bis sie durch Schaden verloren sind, oder wenn der Charakter den Zauber abermals anwendet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344699, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZdlsX5F803JJEat6" +} diff --git a/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json b/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json new file mode 100644 index 00000000..83260ca4 --- /dev/null +++ b/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json @@ -0,0 +1,71 @@ +{ + "_id": "ASvdS1fyjmRS1Xb6", + "name": "Magische Waffe", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/pointy-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber verleiht einer Waffe magische Kräfte. Ihr WB erhöht sich für die Dauer des Zaubers um +1 und der mit ihr verursachte Schaden gilt als magisch, verletzt beispielsweise also auch körperlose Wesen wie Geister.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1r", + "minimumLevels": { + "healer": 1, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344485, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ASvdS1fyjmRS1Xb6" +} diff --git a/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json b/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json new file mode 100644 index 00000000..27398e13 --- /dev/null +++ b/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json @@ -0,0 +1,71 @@ +{ + "_id": "dzYAc9ti7ghhkyiX", + "name": "Magisches Schloss", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Bis Schloss geöffnet", + "unit": "custom" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": 3, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344760, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dzYAc9ti7ghhkyiX" +} diff --git a/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json b/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json new file mode 100644 index 00000000..30c94342 --- /dev/null +++ b/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json @@ -0,0 +1,71 @@ +{ + "_id": "JvK5b8DXdHgaByjP", + "name": "Manabrot", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/sliced-bread.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus warmes, aber geschmackloses Manabrot.

\n

Maximal kann der Zauberwirker eine Anzahl von Manabrot gleich seiner halbierten Stufe erschaffen. Jeder der blau-violetten, teigähnlichen Klumpen, entspricht einer ganzen Mahlzeit (von denen ein Erwachsener 3 pro Tag benötigt) für eine Person.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344550, + "modifiedTime": 1740227862566, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JvK5b8DXdHgaByjP" +} diff --git a/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json b/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json new file mode 100644 index 00000000..c789d594 --- /dev/null +++ b/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json @@ -0,0 +1,71 @@ +{ + "_id": "l8o3vG0kW9qvFmBY", + "name": "Nahrung zaubern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/potato.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus die Grundzutat einer einfachen Mahlzeit, wie etwa Linsen, Reis oder Rüben.

Maximal kann der Zauberwirker genügend Zutaten für eine Anzahl von Mahlzeiten (von denen ein Erwachsener 3 pro Tag benötigt) gleich seiner Stufe erschaffen

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 2, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344869, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l8o3vG0kW9qvFmBY" +} diff --git a/packs/spells/Netz_73bT47FtQgPp9Snq.json b/packs/spells/Netz_73bT47FtQgPp9Snq.json new file mode 100644 index 00000000..4af51994 --- /dev/null +++ b/packs/spells/Netz_73bT47FtQgPp9Snq.json @@ -0,0 +1,71 @@ +{ + "_id": "73bT47FtQgPp9Snq", + "name": "Netz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(AGI+ST)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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. / 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 4, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344461, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!73bT47FtQgPp9Snq" +} diff --git a/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json b/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json new file mode 100644 index 00000000..15cedc91 --- /dev/null +++ b/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json @@ -0,0 +1,71 @@ +{ + "_id": "c9confMPTK2Q7AfX", + "name": "Niesanfall", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/energy-breath.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg kann das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, sich vor lauter Niesen nur (mit halbiertem Laufen-Wert) bewegen, bis der Spruchwirker wieder an der Reihe ist.

\n

Der Niesanfall endet vorzeitig, sollte das Ziel Schaden erhalten.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": 3, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344729, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!c9confMPTK2Q7AfX" +} diff --git a/packs/spells/Putzteufel_gLzyooEA8RBya37o.json b/packs/spells/Putzteufel_gLzyooEA8RBya37o.json new file mode 100644 index 00000000..5365f60a --- /dev/null +++ b/packs/spells/Putzteufel_gLzyooEA8RBya37o.json @@ -0,0 +1,71 @@ +{ + "_id": "gLzyooEA8RBya37o", + "name": "Putzteufel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-broom.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft einen kleinen, magischen Diener, der für ihn unglaublich flink putzt, aufräumt und packt.

\n

Ansonsten ist der Putzteufel völlig unütz, befolgt keine andersartigen Befehle und verpufft bei Schaden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "bis zu VE / 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344835, + "modifiedTime": 1740227862582, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gLzyooEA8RBya37o" +} diff --git a/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json b/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json new file mode 100644 index 00000000..b655da2c --- /dev/null +++ b/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json @@ -0,0 +1,71 @@ +{ + "_id": "ZXBYdYAtcs3FoTAx", + "name": "Reinigen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/shower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber reinigt eine ungewaschene Person, einen Gegenstand (wie einen schlammbesudelten Umhang) oder auch eine Mahlzeit (von Bakterien, Fäulnis und Gift).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 3, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344695, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZXBYdYAtcs3FoTAx" +} diff --git a/packs/spells/Rost_eMeuOnBODch7D9dm.json b/packs/spells/Rost_eMeuOnBODch7D9dm.json new file mode 100644 index 00000000..86be76a4 --- /dev/null +++ b/packs/spells/Rost_eMeuOnBODch7D9dm.json @@ -0,0 +1,71 @@ +{ + "_id": "eMeuOnBODch7D9dm", + "name": "Rost", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/rusty-sword.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber lässt bei Erfolg eine nichtmagische Waffe oder ein nichtmagisches Rüstungsteil aus Metall augenblicklich zu rostigem Staub zerfallen.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-WB der Waffe bzw. -PA der Rüstung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 7, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344764, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMeuOnBODch7D9dm" +} diff --git a/packs/spells/Schatten_5mF59XCsZffF0cSp.json b/packs/spells/Schatten_5mF59XCsZffF0cSp.json new file mode 100644 index 00000000..560184a0 --- /dev/null +++ b/packs/spells/Schatten_5mF59XCsZffF0cSp.json @@ -0,0 +1,71 @@ +{ + "_id": "5mF59XCsZffF0cSp", + "name": "Schatten", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", + "equipped": false, + "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": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "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. / 2", + "unit": "rounds" + }, + "cooldownDuration": "5r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344458, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5mF59XCsZffF0cSp" +} diff --git a/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json b/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json new file mode 100644 index 00000000..24eadfca --- /dev/null +++ b/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json @@ -0,0 +1,71 @@ +{ + "_id": "dPGm1Ji2U0fJxnT3", + "name": "Schatten erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344742, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dPGm1Ji2U0fJxnT3" +} diff --git a/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json b/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json new file mode 100644 index 00000000..1fafd734 --- /dev/null +++ b/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json @@ -0,0 +1,71 @@ +{ + "_id": "RUfE7hqqHCKMEMbh", + "name": "Schattenklinge", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/blade-fall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die verzauberte Klinge verströmt rauchartige Schatten voll dunkler Magie. Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Jedesmal, wenn mit der Waffe Schaden verursacht wird, sinkt die Abwehr des Ziels um 1. Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist.

\n

Schattenklinge ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe}, @Compendium[ds4.spells.919AW6tITRT8WikD]{Glühender Glaube} oder @Compendium[ds4.spells.cggG4v6EBPmEZuAQ]{Waffe des Lichts} kombinierbar.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344617, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RUfE7hqqHCKMEMbh" +} diff --git a/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json b/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json new file mode 100644 index 00000000..32511554 --- /dev/null +++ b/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json @@ -0,0 +1,71 @@ +{ + "_id": "b5RFJWPaYbpXNpsv", + "name": "Schattenlanze", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 5, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "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": "0r", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344719, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!b5RFJWPaYbpXNpsv" +} diff --git a/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json b/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json new file mode 100644 index 00000000..267985d8 --- /dev/null +++ b/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json @@ -0,0 +1,71 @@ +{ + "_id": "tPFiElqQuvih76gd", + "name": "Schattenpfeil", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/energy-arrow.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 2, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "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": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 2 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344895, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tPFiElqQuvih76gd" +} diff --git a/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json b/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json new file mode 100644 index 00000000..585fe8a0 --- /dev/null +++ b/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json @@ -0,0 +1,71 @@ +{ + "_id": "mg3rChUVQrZ09gCW", + "name": "Schattensäule", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bubbling-beam.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.b5RFJWPaYbpXNpsv]{Schattenlanze}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe Schattensäule.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 8, + "complex": "" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": true, + "shadow": true, + "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": null, + "wizard": 20, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344876, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mg3rChUVQrZ09gCW" +} diff --git a/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json b/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json new file mode 100644 index 00000000..5654d63a --- /dev/null +++ b/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json @@ -0,0 +1,71 @@ +{ + "_id": "bKCGwIne0uoWZiY0", + "name": "Schleudern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": true, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE / 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 16, + "wizard": 12, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344726, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bKCGwIne0uoWZiY0" +} diff --git a/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json b/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json new file mode 100644 index 00000000..646ba6d7 --- /dev/null +++ b/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json @@ -0,0 +1,71 @@ +{ + "_id": "NWPoiZHCmZ7ZJud4", + "name": "Schutzfeld", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344578, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NWPoiZHCmZ7ZJud4" +} diff --git a/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json b/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json new file mode 100644 index 00000000..f07bbc57 --- /dev/null +++ b/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json @@ -0,0 +1,71 @@ +{ + "_id": "TKx3LO5ZWQuKpK04", + "name": "Schutzkuppel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/shiny-omega.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Schutzkuppel mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, solange er sich konzentriert (zählt als ganze Aktion).

\n

Die unbewegliche Kuppel ist von beiden Seiten unpassierbar – weder Angriffe, Personen noch Zauber wie @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} gelangen hindurch.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": 8, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344643, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TKx3LO5ZWQuKpK04" +} diff --git a/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json b/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json new file mode 100644 index 00000000..d2af2909 --- /dev/null +++ b/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json @@ -0,0 +1,71 @@ +{ + "_id": "s31yIj9viKMLyaen", + "name": "Schutzschild dehnen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verdoppelt die erwürfelte Dauer eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344888, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s31yIj9viKMLyaen" +} diff --git a/packs/spells/Schutzschild_dpz383XbGFXEsGot.json b/packs/spells/Schutzschild_dpz383XbGFXEsGot.json new file mode 100644 index 00000000..f015ab16 --- /dev/null +++ b/packs/spells/Schutzschild_dpz383XbGFXEsGot.json @@ -0,0 +1,71 @@ +{ + "_id": "dpz383XbGFXEsGot", + "name": "Schutzschild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 4, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344746, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dpz383XbGFXEsGot" +} diff --git a/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json b/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json new file mode 100644 index 00000000..b80d24b8 --- /dev/null +++ b/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json @@ -0,0 +1,71 @@ +{ + "_id": "0O56S0JDXi2y71Pu", + "name": "Schutzschild stärken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/diamond-hard.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Verdoppelt den Bonus auf die Abwehr eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344446, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0O56S0JDXi2y71Pu" +} diff --git a/packs/spells/Schweben_SPnYNGggFb8XRICE.json b/packs/spells/Schweben_SPnYNGggFb8XRICE.json new file mode 100644 index 00000000..1843856f --- /dev/null +++ b/packs/spells/Schweben_SPnYNGggFb8XRICE.json @@ -0,0 +1,71 @@ +{ + "_id": "SPnYNGggFb8XRICE", + "name": "Schweben", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/angel-wings.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel kann statt zu laufen auch lotrecht hoch und runter schweben.

Der Laufen-Wert beim Schweben ist dabei genau so hoch, wie am Boden (man kann im Schweben nicht rennen).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "custom" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 7, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344620, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SPnYNGggFb8XRICE" +} diff --git a/packs/spells/Schweig_rojd8AL3iXmGfc5m.json b/packs/spells/Schweig_rojd8AL3iXmGfc5m.json new file mode 100644 index 00000000..c973b3b9 --- /dev/null +++ b/packs/spells/Schweig_rojd8AL3iXmGfc5m.json @@ -0,0 +1,71 @@ +{ + "_id": "rojd8AL3iXmGfc5m", + "name": "Schweig", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/silenced.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, verstummt für die Dauer des Zauberspruchs. Verstummte Zauberwirker können solange nur wortlos zaubern (DS4 S. 47).

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE/2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 12, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344886, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rojd8AL3iXmGfc5m" +} diff --git a/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json b/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json new file mode 100644 index 00000000..2fcb65dc --- /dev/null +++ b/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json @@ -0,0 +1,71 @@ +{ + "_id": "ZF5cwMCnw4Uf1MCz", + "name": "Segen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-hand-grenade.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker und bis zu VE x 2 Kameraden in VE x 2 Meter Umkreis werden gesegnet.

\n

Für die Dauer des Zauberspruchs erhalten sie auf alle Proben einen PW-Bonus von +1.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 2, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344690, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZF5cwMCnw4Uf1MCz" +} diff --git a/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json b/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json new file mode 100644 index 00000000..86c87c54 --- /dev/null +++ b/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json @@ -0,0 +1,71 @@ +{ + "_id": "bGs9MiTMj6k4d1Nl", + "name": "Skelette erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/raise-skeleton.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann eine maximale Anzahl von @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten} (DS4 S. 122) im Wirkungsradius gleich seiner eigenen Stufe zu untotem Leben erwecken. Die Skelette benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344722, + "modifiedTime": 1740227862578, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bGs9MiTMj6k4d1Nl" +} diff --git a/packs/spells/Spionage_xR5aBGFz3916e82x.json b/packs/spells/Spionage_xR5aBGFz3916e82x.json new file mode 100644 index 00000000..05150494 --- /dev/null +++ b/packs/spells/Spionage_xR5aBGFz3916e82x.json @@ -0,0 +1,71 @@ +{ + "_id": "xR5aBGFz3916e82x", + "name": "Spionage", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/spy.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker begibt sich in einen tranceähnlichen Zustand, in dem seine optischen und akustischen Sinne sich von seinem Körper lösen können.

\n

Sein unsichtbarer, hörender Blick bewegt sich mit einer konstanten Geschwindigkeit von VE Meter pro Kampfrunde und kann durch die kleinsten Öffnungen dringen. Der Zauberwirker sieht und hört dabei alles, als wäre er selbst vor Ort.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 8, + "wizard": 6, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344903, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xR5aBGFz3916e82x" +} diff --git a/packs/spells/Springen_L6NrH3AEmS2I3NWG.json b/packs/spells/Springen_L6NrH3AEmS2I3NWG.json new file mode 100644 index 00000000..06b0e5bc --- /dev/null +++ b/packs/spells/Springen_L6NrH3AEmS2I3NWG.json @@ -0,0 +1,71 @@ +{ + "_id": "L6NrH3AEmS2I3NWG", + "name": "Springen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 5, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344560, + "modifiedTime": 1740227862568, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!L6NrH3AEmS2I3NWG" +} diff --git a/packs/spells/Spurt_KUbT1gBeThcLY7vU.json b/packs/spells/Spurt_KUbT1gBeThcLY7vU.json new file mode 100644 index 00000000..f4e72bf9 --- /dev/null +++ b/packs/spells/Spurt_KUbT1gBeThcLY7vU.json @@ -0,0 +1,71 @@ +{ + "_id": "KUbT1gBeThcLY7vU", + "name": "Spurt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 7, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344553, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KUbT1gBeThcLY7vU" +} diff --git a/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json b/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json new file mode 100644 index 00000000..59e9d8f2 --- /dev/null +++ b/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json @@ -0,0 +1,71 @@ +{ + "_id": "NRfYtF7tFoNMe1cR", + "name": "Steinwand", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/brick-wall.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker erschafft eine Steinwand, die Ausmaße von bis zu 1 m x VE m x VE m annehmen kann und nicht wieder verschwindet.

\n

Die Steinwand muss auf festen Boden stehen und kann nicht an einem Ort erscheinen, wo sich bereits etwas befindet.

\n

Die Steinwand hat eine Abwehr gleich der dreifachen Stufe des Zauberwirkers, für den Fall, dass jemand sie mit Gewalt durchdringen will. Jeder einzelne Kubikmeter der Steinwand verfügt über LK in Höhe der Stufe des Zauberwirkers.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344573, + "modifiedTime": 1740227862569, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NRfYtF7tFoNMe1cR" +} diff --git a/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json b/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json new file mode 100644 index 00000000..747915c7 --- /dev/null +++ b/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json @@ -0,0 +1,71 @@ +{ + "_id": "DPFRVvfvmhCfcm7E", + "name": "Stoßgebet", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/kneeling.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Druckwelle heiliger Macht schießt aus dem Heiler und bringt Gegner in einem Radius gleich seiner doppelten Stufe in Metern zu Fall.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 5, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344507, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DPFRVvfvmhCfcm7E" +} diff --git a/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json b/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json new file mode 100644 index 00000000..4b30b53f --- /dev/null +++ b/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json @@ -0,0 +1,71 @@ +{ + "_id": "KIyVOdiXZnXJIAh6", + "name": "Stolpern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", + "equipped": false, + "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": false, + "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": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344552, + "modifiedTime": 1740227862567, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KIyVOdiXZnXJIAh6" +} diff --git a/packs/spells/Tanz_lQJvJQFzSxfriOlc.json b/packs/spells/Tanz_lQJvJQFzSxfriOlc.json new file mode 100644 index 00000000..0ee9e8ac --- /dev/null +++ b/packs/spells/Tanz_lQJvJQFzSxfriOlc.json @@ -0,0 +1,71 @@ +{ + "_id": "lQJvJQFzSxfriOlc", + "name": "Tanz", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/ballerina-shoes.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, kann für die Dauer des Zauberspruchs nur tanzen (und dabei höchstens 1 m pro Kampfrunde laufen).

Das groteske Schauspiel endet vorzeitig, sollte das Ziel Schaden erhalten.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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": "VE / 2", + "unit": "minutes" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 8, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344870, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lQJvJQFzSxfriOlc" +} diff --git a/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json b/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json new file mode 100644 index 00000000..00c9ec01 --- /dev/null +++ b/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json @@ -0,0 +1,71 @@ +{ + "_id": "BdBUObZr9RahUqxA", + "name": "Tarnender Nebel", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/fog.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine Nebelwolke mit einem Radius von maximal VE in Metern entsteht.

Angriffe gegen Ziele in der Nebelwolke werden um 8 erschwert, gleichsam erhalten alle innerhalb des Nebels -8 auf alle Proben, bei denen man besser sehen können sollte. Eine Nebelwolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 4, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344494, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BdBUObZr9RahUqxA" +} diff --git a/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json b/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json new file mode 100644 index 00000000..068385bd --- /dev/null +++ b/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json @@ -0,0 +1,71 @@ +{ + "_id": "VGeMfTNSKWzNGm6r", + "name": "Telekinese", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro (Stufe x 5) kg Gewicht" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "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": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344670, + "modifiedTime": 1740227862575, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VGeMfTNSKWzNGm6r" +} diff --git a/packs/spells/Teleport_ANV77WNlbZFRMssv.json b/packs/spells/Teleport_ANV77WNlbZFRMssv.json new file mode 100644 index 00000000..cf4e5a1e --- /dev/null +++ b/packs/spells/Teleport_ANV77WNlbZFRMssv.json @@ -0,0 +1,71 @@ +{ + "_id": "ANV77WNlbZFRMssv", + "name": "Teleport", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/teleport.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber teleportiert den Zauberwirker und bis zu VE Begleiter an einen ihm bekannten Ort. War der Zauberwirker nur einmal dort und kennt ihn nur flüchtig, wird der PW der Zaubern-Probe halbiert. Bei einem Teleport-Patzer erscheinen die Charaktere in einem Objekt (zu tief im Boden, ein naher Baum) und erhalten W20 nicht abwehrbaren Schaden (2W20, wenn der Ort nur flüchtig bekannt ist).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro Begleiter" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 10, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344484, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ANV77WNlbZFRMssv" +} diff --git a/packs/spells/Terror_SgDFje4OTxqPEzoA.json b/packs/spells/Terror_SgDFje4OTxqPEzoA.json new file mode 100644 index 00000000..747c421e --- /dev/null +++ b/packs/spells/Terror_SgDFje4OTxqPEzoA.json @@ -0,0 +1,71 @@ +{ + "_id": "SgDFje4OTxqPEzoA", + "name": "Terror", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+VE)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344636, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SgDFje4OTxqPEzoA" +} diff --git a/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json b/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json new file mode 100644 index 00000000..6db20c31 --- /dev/null +++ b/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json @@ -0,0 +1,71 @@ +{ + "_id": "TVsayZ3WkUxyzKbL", + "name": "Tierbeherschung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/charging-bull.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Erfolg wird das Tier zu einem willenlosen Sklaven des Zauberwirkers. Es befolgt alle seine einsilbigen Befehle, auch wenn diese den eigenen Tod bedeuten können.

Ein Zauberwirker kann niemals mehr als VE Tiere gleichzeitig durch diesen Zauber beherrschen.

Endet der Zauber, nimmt das Tier wieder sein ursprüngliches Verhalten an.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-LK / 2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 9, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344646, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TVsayZ3WkUxyzKbL" +} diff --git a/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json b/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json new file mode 100644 index 00000000..38970d36 --- /dev/null +++ b/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json @@ -0,0 +1,71 @@ +{ + "_id": "GpdYH1BAO4tIf6Fj", + "name": "Tiere besänftigen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/paw-heart.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Aggressive Tiere im Wirkungsradius können mit diesem Zauber besänftigt werden. Magische Wesen (wie beispielsweise @Compendium[ds4.creatures.SQv63FQBjA5jW5xv]{Einhörner} oder @Compendium[ds4.creatures.O2maANGDJHPLX8aE]{Unwölfe}) sind gegen den Zauber immun, ebenso Tiere, die unter einem Kontrollzauber wie @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} o.ä. stehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-LK / 5 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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 x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": 7, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344530, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GpdYH1BAO4tIf6Fj" +} diff --git a/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json b/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json new file mode 100644 index 00000000..cabe7bb4 --- /dev/null +++ b/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json @@ -0,0 +1,71 @@ +{ + "_id": "sKCHnXV6c4w1CJWf", + "name": "Totengespräch", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/half-dead.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann den Geist eines Toten befragen, dieser muss ihm antworten, allerdings nicht automatisch wahrheitsgemäß.

\n

Maximal wirkt der Zauber VE Minuten oder bis dem Geist VE Fragen gestellt wurden, die dieser nur mit „Ja“ oder „Nein“ beantwortet. Der Geist versteht die Sprache des Zauberwirkers und antwortet in dieser.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE Fragen, bzw. VE Minuten", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344891, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sKCHnXV6c4w1CJWf" +} diff --git a/packs/spells/Trugbild_eMilydZd4gqDUsff.json b/packs/spells/Trugbild_eMilydZd4gqDUsff.json new file mode 100644 index 00000000..96445252 --- /dev/null +++ b/packs/spells/Trugbild_eMilydZd4gqDUsff.json @@ -0,0 +1,71 @@ +{ + "_id": "eMilydZd4gqDUsff", + "name": "Trugbild", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE / 2", + "unit": "hours" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 7 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344792, + "modifiedTime": 1740227862581, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!eMilydZd4gqDUsff" +} diff --git a/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json b/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json new file mode 100644 index 00000000..9448292b --- /dev/null +++ b/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json @@ -0,0 +1,71 @@ +{ + "_id": "nR6Wbt9k2c8SBVpT", + "name": "Unsichtbares sehen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible-face.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält für die Dauer des Zauberspruchs die Fähigkeit, unsichtbare Objekte und Lebewesen ganz normal erkennen zu können.

\n

Magie, magische Effekte – bis auf den Zauberspruch @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} – oder auch verborgene Fallen gelten nicht als unsichtbar in Bezug auf diesen Zauberspruch.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 10, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344878, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nR6Wbt9k2c8SBVpT" +} diff --git a/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json b/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json new file mode 100644 index 00000000..cf9cfab8 --- /dev/null +++ b/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json @@ -0,0 +1,71 @@ +{ + "_id": "EXqdD6yddQ4c0zAw", + "name": "Unsichtbarkeit", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 20, + "wizard": 12, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344512, + "modifiedTime": 1740227862564, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!EXqdD6yddQ4c0zAw" +} diff --git a/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json b/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json new file mode 100644 index 00000000..a6835906 --- /dev/null +++ b/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json @@ -0,0 +1,71 @@ +{ + "_id": "zWol1q702sjg2b7K", + "name": "Verborgenes sehen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/secret-door.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann unbelebte Dinge – die verborgen oder absichtlich versteckt sind (Fallen, Geheimtüren u.ä.) – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, selbst wenn sie durch etwas verdeckt sind, wie ein Vorhang oder ein Behältnis.

Der Zauber funktioniert nicht bei magischen oder unsichtbaren Objekten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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 x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344907, + "modifiedTime": 1740227862592, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zWol1q702sjg2b7K" +} diff --git a/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json b/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json new file mode 100644 index 00000000..7878c249 --- /dev/null +++ b/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json @@ -0,0 +1,71 @@ +{ + "_id": "s3nfDjJjDtiHGKzm", + "name": "Verdampfen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/smoking-orb.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel beginnt vor magischer Hitze regelrecht zu verdampfen. Der innerlich wirkende Schaden entspricht dem dreifachen Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni von seinen Gegenständen.

\n

Der Zauber ist gegen wasserlose Wesen – wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skelette} oder @Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementare} – nicht einsetzbar.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": true, + "spellGroups": { + "lightning": false, + "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", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 20, + "sorcerer": 18 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344889, + "modifiedTime": 1740227862588, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s3nfDjJjDtiHGKzm" +} diff --git a/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json b/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json new file mode 100644 index 00000000..3723a8fd --- /dev/null +++ b/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json @@ -0,0 +1,71 @@ +{ + "_id": "uryiDdwKAwbASnuH", + "name": "Vergrößern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/expand.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die Körpergröße des freiwilligen Ziels – samt seiner Ausrüstung – verdoppelt sich augenblicklich. Charaktere nehmen die Größenkategorie „groß“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ sowie Laufen verdoppelt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344899, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uryiDdwKAwbASnuH" +} diff --git a/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json b/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json new file mode 100644 index 00000000..eae0020b --- /dev/null +++ b/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json @@ -0,0 +1,71 @@ +{ + "_id": "ITWKevUdrtyBHjgR", + "name": "Verkleinern", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/contract.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das freiwillige Ziel – samt seiner Ausrüstung – wird auf ein Zehntel seiner Körpergröße verkleinert. Charaktere nehmen die Größenkategorie „winzig“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ halbiert und Laufen durch 10 geteilt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "minutes" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 10, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344543, + "modifiedTime": 1740227862565, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ITWKevUdrtyBHjgR" +} diff --git a/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json b/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json new file mode 100644 index 00000000..2a4f7dcc --- /dev/null +++ b/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json @@ -0,0 +1,71 @@ +{ + "_id": "tqJ8DBLXcnCfrG3t", + "name": "Verlangsamen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/snail.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber halbiert den Laufen-Wert von einer maximalen Anzahl von Zielen gleich der halbierten Stufe des Zauberwirkers.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 3, + "wizard": 8, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344897, + "modifiedTime": 1740227862589, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tqJ8DBLXcnCfrG3t" +} diff --git a/packs/spells/Versetzen_WETUfLs0pbo1odAp.json b/packs/spells/Versetzen_WETUfLs0pbo1odAp.json new file mode 100644 index 00000000..4fb194fd --- /dev/null +++ b/packs/spells/Versetzen_WETUfLs0pbo1odAp.json @@ -0,0 +1,71 @@ +{ + "_id": "WETUfLs0pbo1odAp", + "name": "Versetzen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/body-swapping.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das einwilligende Ziel wird bis zu Probenergebnis / 2 Meter weit teleportiert, eine klare Sichtlinie vorausgesetzt.

Reicht die ermittelte Entfernung nicht aus, um den Zielpunkt zu erreichen, wird der Charakter dennoch – so weit wie möglich – in dessen Richtung versetzt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 10, + "wizard": 6, + "sorcerer": 6 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344681, + "modifiedTime": 1740227862576, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WETUfLs0pbo1odAp" +} diff --git a/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json b/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json new file mode 100644 index 00000000..31020498 --- /dev/null +++ b/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json @@ -0,0 +1,71 @@ +{ + "_id": "SaLY0K9FQRb1TQoQ", + "name": "Versetzte Stimme", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/lips.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann das von ihm Gesagte an einen bis zu VE x 10 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt).

\n

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück einer Person.

\n

Jeder in Hörweite dieses Punktes kann den Zauberwirker hören.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-1 pro 10 Meter Entfernung" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 2, + "sorcerer": 3 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344624, + "modifiedTime": 1740227862572, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!SaLY0K9FQRb1TQoQ" +} diff --git a/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json b/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json new file mode 100644 index 00000000..20f9384b --- /dev/null +++ b/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json @@ -0,0 +1,71 @@ +{ + "_id": "0Jp3WM3Aba8VKcrb", + "name": "Verteidigung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/templar-shield.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis der Zauberwirker in der nächsten Kampfrunde wieder an der Reihe ist.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": true, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "1", + "unit": "rounds" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 1, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344444, + "modifiedTime": 1740227862555, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!0Jp3WM3Aba8VKcrb" +} diff --git a/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json b/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json new file mode 100644 index 00000000..55d6fcfe --- /dev/null +++ b/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json @@ -0,0 +1,71 @@ +{ + "_id": "QVcmtKpmT5HzIwur", + "name": "Vertreiben", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/chalk-outline-murder.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Vertreibt eine Anzahl von Untoten im Wirkungsbereich gleich der halbierten Stufe des Zauberwirkers.

\n

Für die Dauer der Vertreibung ziehen sich die Untoten so schnell wie möglich von dem Zauberwirker zurück bis auf eine Distanz von Probenergebnis x 5 m.

\n

Bis zum Ablauf des Zaubers können die Untoten niemanden in seinem Wirkungsbereich angreifen.

\n

Der Effekt endet bei jedem Untoten, der Schaden erleidet.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche betroffen sind. Alternativ kann auch ein bestimmter Untoter als Ziel der Vertreibung bestimmt werden.

\n

Wird beim Vertreiben ein Immersieg gewürfelt, erhalten die betroffenen Untoten zusätzlichen abwehrbaren Schaden in der tatsächlichen Höhe des Immersiegs.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(KÖR+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "minutes" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344603, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!QVcmtKpmT5HzIwur" +} diff --git a/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json b/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json new file mode 100644 index 00000000..4c02e993 --- /dev/null +++ b/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json @@ -0,0 +1,71 @@ +{ + "_id": "4Wlx1LdkUK3BYctJ", + "name": "Verwandlung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/ghost-ally.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker nimmt das Aussehen einer anderen Person an, die seinem Volk angehören und gleichen Geschlechts sein muss.

\n

Handelt es sich um eine bestimmte Person, die der Charakter jedoch nur flüchtig oder aus der Ferne kennt, können ihm Fehler unterlaufen, wodurch Bekannte der Zielperson mit einer Bemerken-Probe den Zauber durchschauen können.

\n

Untote Wesen u. ä. kann man mit diesem rein optischen Effekt nicht täuschen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 10 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344455, + "modifiedTime": 1740227862557, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!4Wlx1LdkUK3BYctJ" +} diff --git a/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json b/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json new file mode 100644 index 00000000..34d9b959 --- /dev/null +++ b/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json @@ -0,0 +1,71 @@ +{ + "_id": "niQVUxJHzdMDlwXc", + "name": "Verwirren", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": true, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 2", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 8, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344879, + "modifiedTime": 1740227862586, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!niQVUxJHzdMDlwXc" +} diff --git a/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json b/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json new file mode 100644 index 00000000..de762690 --- /dev/null +++ b/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json @@ -0,0 +1,71 @@ +{ + "_id": "8Y5rUQhP8XCQM9xL", + "name": "Volksgestalt", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/relationship-bounds.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bis zu VE einwilligende, humanoide Ziele (zu denen natürlich auch der Zauberwirker selbst gehören kann) in Reichweite werden in die Gestalt eines anderen humanoiden Volkes der gleichen Größenkategorie (DS4 S. 104) verwandelt (nicht jedoch seine Ausrüstung).

\n

Beispielsweise könnte man einen Menschen in einen Ork oder sogar in einen uralten Zwerg verwandeln.

\n

Der Charakter behält dabei all seine Fähigkeiten und erhält umgekehrt auch keine Fähigkeiten des Volkes, in das er verwandelt wurde.

\n

Während die Stimme sich dem neuen Volk anpasst, erinnern Augen und Gesichtzüge weiterhin an die eigentliche Gestalt des verwandelten Charakters.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": true, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": 5, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344473, + "modifiedTime": 1740227862560, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8Y5rUQhP8XCQM9xL" +} diff --git a/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json b/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json new file mode 100644 index 00000000..18afc937 --- /dev/null +++ b/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json @@ -0,0 +1,71 @@ +{ + "_id": "7HCeOPLYvb1SQxcV", + "name": "Wächter", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/static-guard.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Ein magischer Wächter alarmiert bzw. weckt den Zauberwirker, sobald ein Wesen sich bis auf VE x 2 Meter oder weniger dem Zielpunkt nähert.

\n

Dies gilt nicht für Wesen, die sich während des Zaubervorgangs bereits in diesem Bereich aufhielten.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 4, + "wizard": 6, + "sorcerer": 5 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344463, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7HCeOPLYvb1SQxcV" +} diff --git a/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json b/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json new file mode 100644 index 00000000..f66a4e08 --- /dev/null +++ b/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json @@ -0,0 +1,71 @@ +{ + "_id": "cggG4v6EBPmEZuAQ", + "name": "Waffe des Lichts", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/aspergillum.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Die anvisierte Waffe erstrahlt mit der heiligen Kraft des Lichts.

\n

Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent Diener des Lichts die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Jedesmal, wenn mit der Waffe Schaden verursacht wird, erhöht sich die Abwehr des Waffenträgers um 1.

\n

Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist oder der Charakter die Waffe fallen lässt.

\n

Waffe des Lichts kann man nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} oder @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge} kombinieren.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "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": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 7, + "wizard": 8, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344734, + "modifiedTime": 1740227862579, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cggG4v6EBPmEZuAQ" +} diff --git a/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json b/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json new file mode 100644 index 00000000..4cb08b56 --- /dev/null +++ b/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json @@ -0,0 +1,71 @@ +{ + "_id": "OODDFguw5Y113ywm", + "name": "Wahnsinn", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/mad-scientist.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers wird auf der Stelle wahnsinnig und zu einem sabbernden Schwachsinnigen, dessen Geist fortan auf 0 gesenkt ist.

\n

Nur der Zauberspruch @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} kann diesen Effekt bannen, wofür pro wiederherzustellenden Punkt in GEI der Spruch jeweils einmal auf das Ziel angewendet werden muss.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-(GEI+AU)/2 des Ziels" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 15 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344599, + "modifiedTime": 1740227862570, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OODDFguw5Y113ywm" +} diff --git a/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json b/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json new file mode 100644 index 00000000..fbd55d98 --- /dev/null +++ b/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json @@ -0,0 +1,71 @@ +{ + "_id": "7foZzrxZuX0dCh3C", + "name": "Wandöffnung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": true, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. / 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": 6, + "sorcerer": 14 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344466, + "modifiedTime": 1740227862558, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7foZzrxZuX0dCh3C" +} diff --git a/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json b/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json new file mode 100644 index 00000000..26f7cb63 --- /dev/null +++ b/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json @@ -0,0 +1,71 @@ +{ + "_id": "zcuCpowoHDs7eIHn", + "name": "Wasser teilen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann jegliche Gewässer teilen und eine 1 m breite Schneise bis zu Grund in sie schlagen, ihre Länge einzig und allein begrenzt durch den Entfernungsmalus auf Zielzauber (DS4 S. 43).

\n

Wird der Zauber gegen flüssige Wesen wie beispielsweise @Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementare} eingesetzt, entspricht das Wurfergebnis nicht abwehrbaren Schaden, während die Zauberdauer nur noch augenblicklich ist.

", + "equipped": false, + "spellType": "targetedSpellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": 12, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344908, + "modifiedTime": 1740227862592, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zcuCpowoHDs7eIHn" +} diff --git a/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json b/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json new file mode 100644 index 00000000..4df3b242 --- /dev/null +++ b/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json @@ -0,0 +1,71 @@ +{ + "_id": "TKkpNdYo6cbFq7Pt", + "name": "Wasser weihen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-water.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Berührtes, reines Wasser wird zu heiligem @Compendium[ds4.equipment.RoXGTPdisjn6AdYK]{Weihwasser}. Bei jeder Anwendung des Zaubers stellt der Heiler eine Anzahl an Weihwassereinheiten (etwa 1/2 Liter) gleich dem halbierten Probenergebnis her, genügend „normales“ Wasser als Rohstoff vorausgesetzt.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 1, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344639, + "modifiedTime": 1740227862573, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TKkpNdYo6cbFq7Pt" +} diff --git a/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json b/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json new file mode 100644 index 00000000..04786c32 --- /dev/null +++ b/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json @@ -0,0 +1,71 @@ +{ + "_id": "mYZ3gFtRJASLL9pv", + "name": "Wasserwandeln", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/walk.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Das Ziel des Zaubers kann eine Anzahl von Runden gleich dem Probenergebnis auf Wasser laufen, als befände es sich an Land.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": true, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": true, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "VE", + "unit": "hours" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": 5, + "wizard": 9, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344875, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mYZ3gFtRJASLL9pv" +} diff --git a/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json b/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json new file mode 100644 index 00000000..4763840f --- /dev/null +++ b/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json @@ -0,0 +1,71 @@ +{ + "_id": "DNplbUwfxszg5UbZ", + "name": "Wechselzauber", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magick-trick.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Präpariert einen Zauberspruch des Zauberwirkers, um einmalig aktionsfrei zu diesem zu wechseln.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 12, + "wizard": 10, + "sorcerer": 12 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344503, + "modifiedTime": 1740227862563, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DNplbUwfxszg5UbZ" +} diff --git a/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json b/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json new file mode 100644 index 00000000..896e07ed --- /dev/null +++ b/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json @@ -0,0 +1,71 @@ +{ + "_id": "duf86LKvOIyDXJbc", + "name": "Wiederbelebung", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/heart-wings.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauber belebt einen Charakter, der nicht eines natürlichen Todes starb, wieder zum Leben mit 1 LK.

\n

Das Ziel darf höchstens seit W20 Tagen tot sein und verliert bei der Wiederbelebung permanent 1 Punkt KÖR (DS4 S. 42).

\n

Charaktere mit KÖR 1 können folglich also nicht mehr mit Hilfe dieses Zauberspruchs wiederbelebt bleiben.

\n

Zu beachten ist, dass dieser Zauber keine besonderen Verletzungen heilt – beispielsweise sollte ein aufgeschlitzte Kehle oder ein zerstampfter Körper vor der Wiederbelebung mit dem Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} behandelt werden, um ein erneutes Ableben gleich nach der Wiederbelebung zu verhindern.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": true, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": null, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344757, + "modifiedTime": 1740227862580, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!duf86LKvOIyDXJbc" +} diff --git a/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json b/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json new file mode 100644 index 00000000..8987ad8e --- /dev/null +++ b/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json @@ -0,0 +1,71 @@ +{ + "_id": "aDitBSXiHFI67zDZ", + "name": "Wolke der Reue", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/tear-tracks.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine unsichtbare Wolke der Reue mit einem Radius von maximal VE in Metern entsteht.

Jeder Charakter innerhalb der Wolke empfindet ein unterschwelliges Schuldgefühl, wirkt leicht verunsichert und erhält dadurch -1 auf alle Proben.

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -2, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": 1, + "wizard": 6, + "sorcerer": null + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344707, + "modifiedTime": 1740227862577, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aDitBSXiHFI67zDZ" +} diff --git a/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json b/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json new file mode 100644 index 00000000..f76af558 --- /dev/null +++ b/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json @@ -0,0 +1,71 @@ +{ + "_id": "xs7tx8K3ZdQ76u0b", + "name": "Wolke des Todes", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -4, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": true, + "transport": false, + "damage": true, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": true + }, + "maxDistance": { + "value": "VE x 5", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb. x 2", + "unit": "rounds" + }, + "cooldownDuration": "100r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 13 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344904, + "modifiedTime": 1740227862591, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!xs7tx8K3ZdQ76u0b" +} diff --git a/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json b/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json new file mode 100644 index 00000000..27853e84 --- /dev/null +++ b/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json @@ -0,0 +1,71 @@ +{ + "_id": "uAgln8KHIaeK9G1I", + "name": "Zauberabklang", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/backward-time.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Mit diesem Zauber kann versucht werden, die Abklingzeit eines zuvor (innerhalb der letzten VE Kamfprunden) erfolgreich gewirkten Zauberspruchs wieder auf Null zu senken.

Misslingt die Probe, kann man den Zauberabklang bei diesem speziellen Zauberspruch erst wieder versuchen, wenn der Zauberwirker ihn abermals gewirkt hat.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "- eigene Zugangsstufe für den Spruch" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 10, + "wizard": 5, + "sorcerer": 9 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344898, + "modifiedTime": 1740227862590, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!uAgln8KHIaeK9G1I" +} diff --git a/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json b/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json new file mode 100644 index 00000000..8df3393e --- /dev/null +++ b/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json @@ -0,0 +1,71 @@ +{ + "_id": "USNJNNF2jDaS6BDQ", + "name": "Zauberleiter", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/ladder.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Eine magische Leiter entsteht, die bis zu VE x Zauberwirkerstufe Meter hoch sein kann.

Die Leiter steht fest im Raum und benötigt keinen Halt. Sie bleibt, solange der Zauberwirker sich ununterbrochen konzentriert (zählt als ganze Aktion).

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Konzentration", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": 8, + "wizard": 4, + "sorcerer": 4 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344664, + "modifiedTime": 1740227862574, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!USNJNNF2jDaS6BDQ" +} diff --git a/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json b/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json new file mode 100644 index 00000000..fd93b2e4 --- /dev/null +++ b/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json @@ -0,0 +1,71 @@ +{ + "_id": "kOCHuBrtIXOwoZ1J", + "name": "Zaubertrick", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-hat.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieser Zauberspruch erzeugt kleine, unschädliche Illusionen. Beispielsweise kann der Zauberwirker schwebende Bälle zaubern oder die Illusion eines Kaninchens aus einem Hut ziehen.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "VE x 2", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": null, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344867, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kOCHuBrtIXOwoZ1J" +} diff --git a/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json b/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json new file mode 100644 index 00000000..2cdd4189 --- /dev/null +++ b/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json @@ -0,0 +1,71 @@ +{ + "_id": "BGnY1p1qZXwpzXFA", + "name": "Zeitstop", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": -5, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Selbst", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Prb.", + "unit": "rounds" + }, + "cooldownDuration": "d20d", + "minimumLevels": { + "healer": null, + "wizard": 15, + "sorcerer": 20 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344490, + "modifiedTime": 1740227862562, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!BGnY1p1qZXwpzXFA" +} diff --git a/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json b/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json new file mode 100644 index 00000000..5e989850 --- /dev/null +++ b/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json @@ -0,0 +1,71 @@ +{ + "_id": "mBFPKvtK3Rmq7CFY", + "name": "Zombies erwecken", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/skoll/raise-zombie.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Schwarzmagier kann eine maximale Anzahl an Leichen gleich seiner eigenen Stufe im Wirkungsradius zu untotem Leben erwecken.

\n

Die @Compendium[ds4.creatures.rLUCyWfSBebB8cSC]{Zombies} (DS4 S. 125) benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": true, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": true, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "VE x 5", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "1d", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": 8 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344873, + "modifiedTime": 1740227862585, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!mBFPKvtK3Rmq7CFY" +} diff --git a/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json b/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json new file mode 100644 index 00000000..46484376 --- /dev/null +++ b/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json @@ -0,0 +1,71 @@ +{ + "_id": "ip0DVeb1YeNrEeUu", + "name": "Öffnen", + "type": "spell", + "img": "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Öffnet ein Schloss, ohne es zu beschädigen. Der normalerweise immer +0 betragende Schlosswert (SW) kann durch bessere Qualität oder den Zauberspruch @Compendium[ds4.spells.dzYAc9ti7ghhkyiX]{Magisches Schloss} erhöht werden.

\n

Misslingt der Zauber, kann der Zauberwirker es erneut versuchen. Jeder Folgewurf senkt den PW der Zaubern-Proben bei diesem speziellen Schloss jedoch um jeweils 2.

\n

Dieser kumulative Malus gegen dieses eine Schloss erlischt erst, wenn der Zauberwirker eine neue Stufe erreicht.

", + "equipped": false, + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "-SW" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "air": false, + "transport": false, + "damage": false, + "shadow": false, + "protection": false, + "mindAffecting": false, + "demonology": false, + "necromancy": false, + "transmutation": false, + "area": false + }, + "maxDistance": { + "value": "Berühren", + "unit": "custom" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "Sofort", + "unit": "custom" + }, + "cooldownDuration": "10r", + "minimumLevels": { + "healer": 2, + "wizard": 1, + "sorcerer": 1 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995344866, + "modifiedTime": 1740227862584, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ip0DVeb1YeNrEeUu" +} diff --git a/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json b/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json new file mode 100644 index 00000000..2f50fb88 --- /dev/null +++ b/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json @@ -0,0 +1,32 @@ +{ + "_id": "w2Dn16q2f0gBxTch", + "name": "Abklingen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent senkt die Zauberabklingzeit jedes Zaubers um 1 Runde pro Talentrang. Es ist jedoch nicht möglich, die Abklingzeit eines Zaubers unter Null zu senken.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349656, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w2Dn16q2f0gBxTch" +} diff --git a/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json b/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json new file mode 100644 index 00000000..5fc5bc57 --- /dev/null +++ b/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json @@ -0,0 +1,32 @@ +{ + "_id": "yIcgnr9Xr7Kwocaj", + "name": "Abklingendes Blut", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von bis zu 1 LK pro Talentrang (zählt als freie Aktion) die Abklingzeit eines gerade abklingenden Zauberspruchs um jeweils 1 Runde senken.

\n

Pro weiterem Talentrang kann ein weiterer LK geopfert werden, wodurch die Abklingzeit um eine weitere Runde gesenkt wird.

\n

Abklingendes Blut ist mit dem Talent @Compendium[ds4.talents.w2Dn16q2f0gBxTch]{Abklingen} kombinierbar.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349660, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yIcgnr9Xr7Kwocaj" +} diff --git a/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json b/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json new file mode 100644 index 00000000..1a2fb7ae --- /dev/null +++ b/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json @@ -0,0 +1,32 @@ +{ + "_id": "JbGKvhxVEAdczQib", + "name": "Aderschlitzer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird bei einem Angriff mit einem Messer, Dolch oder Einhandschwert bzw. mit einer Schußwaffe ein Würfelergebnis erzielt, welches gleich oder kleiner als der Talentrang in Aderschlitzer ist, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349509, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JbGKvhxVEAdczQib" +} diff --git a/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json b/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json new file mode 100644 index 00000000..6320b68c --- /dev/null +++ b/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json @@ -0,0 +1,32 @@ +{ + "_id": "sSKiZ5hdQMBnAYRA", + "name": "Adlergestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen flugfähigen @Compendium[ds4.creatures.HjpxMlpyjPr3hd3r]{Adler} (DS4 S. 106) verwandeln. Auch kann er die Gestalt kleinerer Vögel annehmen. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich dabei nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte eines Adlers an.

\n

In Adlergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Adlers einzusetzen. Zauber, die beispielsweise Tiere kontrollieren, haben auf den Druiden in Adlergestalt keinen Einfluss.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349641, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sSKiZ5hdQMBnAYRA" +} diff --git a/packs/talents/Akrobat_9qdc56F4XTntYoo9.json b/packs/talents/Akrobat_9qdc56F4XTntYoo9.json new file mode 100644 index 00000000..3d4133ef --- /dev/null +++ b/packs/talents/Akrobat_9qdc56F4XTntYoo9.json @@ -0,0 +1,90 @@ +{ + "_id": "9qdc56F4XTntYoo9", + "name": "Akrobat", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "ouQeQaI46fM2mq4D", + "changes": [ + { + "key": "system.checks.climb", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.jump", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Akrobatische Proben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!9qdc56F4XTntYoo9.ouQeQaI46fM2mq4D" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Kletterer und Turner. Auf alle Proben, bei denen es um athletisches Geschick, Balancieren oder Kletterkunst geht, erhält der Charakter einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349488, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9qdc56F4XTntYoo9" +} diff --git a/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json b/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json new file mode 100644 index 00000000..7eb4b2dd --- /dev/null +++ b/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json @@ -0,0 +1,32 @@ +{ + "_id": "XUyuomVVOxuSSKXl", + "name": "Alchemie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, um magische Tränke zu brauen (DS4 S. 101).

\n

Jeder Talentrang reduziert die Zubereitungsdauer von Tränken und gibt +1 auf Proben, um diese herzustellen oder zu identifizieren (DS4 S. 47).

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349553, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XUyuomVVOxuSSKXl" +} diff --git a/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json b/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json new file mode 100644 index 00000000..15e3881a --- /dev/null +++ b/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json @@ -0,0 +1,32 @@ +{ + "_id": "hGuQT644hBIM8G4J", + "name": "Arkane Explosion", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden sein magisches Potenzial in einer kugelförmigen, arkanen Explosion entladen, deren Mittelpunkt er bildet.

\n

Die Kugel hat einen festen Durchmesser von Stufe/2 Meter und verursacht nicht abwehrbaren Schaden mit einem Probenwert von 10 pro Talentrang.

\n

Pro Gefährten, der im Explosionsradius steht, kann der Charakter GEI+VE würfeln, um ihn vor dem Schaden zu bewahren.

\n

Das Talent @Compendium[ds4.talents.2ASdMhcx0hN3ZpPc]{Explosionskontrolle} kann hier ebenfalls angewendet werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349605, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hGuQT644hBIM8G4J" +} diff --git a/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json b/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json new file mode 100644 index 00000000..da6f3912 --- /dev/null +++ b/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json @@ -0,0 +1,32 @@ +{ + "_id": "h8rhfVd2pINsa4d2", + "name": "Ausweichen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf einen gegen ihn gerichteten Nahkampfangriff komplett ignorieren (zählt als freie Aktion). Dass der Charakter einem Angriff ausweichen will, muss angesagt werden, bevor feststeht, ob dieser Schlag ihn trifft oder nicht. Gegen Angriffe von Gegnern, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349602, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!h8rhfVd2pINsa4d2" +} diff --git a/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json b/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json new file mode 100644 index 00000000..24cc8d50 --- /dev/null +++ b/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json @@ -0,0 +1,32 @@ +{ + "_id": "kqm5iBvDGn8NQ4BR", + "name": "Bändiger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Talentrang kann der Charakter mit GEI+AU versuchen, einer selbst beschworenen bzw. selbst herbeigerufenen Wesenheit, die er nicht unter seine Kontrolle bringen konnte (die Probe auf Zaubern also misslang), dennoch seinen Willen aufzuzwingen (jeder Versuch zählt als eine ganze Aktion). Bei einem Erfolg kann der Charakter versuchen, noch ein weiteres Wesen (sofern vorhanden) in der gleichen Runde zu bändigen (zählt nun als freie Aktion), insgesamt jedoch nicht mehr zusätzliche Wesenheiten pro Runde, als sein Talentrang beträgt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349615, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kqm5iBvDGn8NQ4BR" +} diff --git a/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json b/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json new file mode 100644 index 00000000..8925940a --- /dev/null +++ b/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json @@ -0,0 +1,32 @@ +{ + "_id": "8pylauN1hY933vrQ", + "name": "Bärengestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen @Compendium[ds4.creatures.InLjj4RGxfkDrtXr]{Bären} (DS4 S. 106) verwandeln. Alternativ kann in Absprache mit dem Spielleiter bei Talenterwerb auch ein anderes „großes“ (DS4 S. 104) Tier gewählt werden. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349484, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8pylauN1hY933vrQ" +} diff --git a/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json b/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json new file mode 100644 index 00000000..721ec6a0 --- /dev/null +++ b/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json @@ -0,0 +1,84 @@ +{ + "_id": "MIYh9GTkm7xIquWK", + "name": "Beschwörer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "1Lrnk4tNGWXSdCd1", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.demonology" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Dämonologie +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MIYh9GTkm7xIquWK.1Lrnk4tNGWXSdCd1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Experte im Beschwören von Dämonen. Er erhält auf alle Versuche, Dämonen zu beschwören und diese zu kontrollieren einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349517, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MIYh9GTkm7xIquWK" +} diff --git a/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json b/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json new file mode 100644 index 00000000..4b3a54c4 --- /dev/null +++ b/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json @@ -0,0 +1,84 @@ +{ + "_id": "5eEaKiUSzWBhG8Bn", + "name": "Beute Schätzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "HHnWhHQf9ibLVCAP", + "changes": [ + { + "key": "system.checks.appraise", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schätzen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!5eEaKiUSzWBhG8Bn.HHnWhHQf9ibLVCAP" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält pro Talentrang einen Bonus von +3, wenn er den Wert eines Gegenstandes schätzt.

\n

Auch kann er mit GEI+AU spüren, ob dieser magisch ist (nicht aber im Anschluss mit GEI+VE, wie Zauberwirker, seine Funktionsweise erkennen), worauf der gleiche Bonus angerechnet wird.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349465, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5eEaKiUSzWBhG8Bn" +} diff --git a/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json b/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json new file mode 100644 index 00000000..b9601058 --- /dev/null +++ b/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json @@ -0,0 +1,90 @@ +{ + "_id": "KgOHPx5oQHKBuVPc", + "name": "Bildung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "JbL6BC0HyUKyxBvd", + "changes": [ + { + "key": "system.checks.decipherScript", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.communicate", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Bildungsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!KgOHPx5oQHKBuVPc.JbL6BC0HyUKyxBvd" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat einen gewissen Grad an Bildung erworben.

\n

Im Gegensatz zu dem Talent @Compendium[ds4.talents.IB1OJ65TseuSw9ZI]{Wissensegebiet}, welches nur einzelne Themengebiete umfasst, erhält man durch das Talent Bildung einen +2 Bonus pro Talentrang auf alle Proben, bei denen es um Allgemeinwissen oder das Lösen von Rätseln geht.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349513, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KgOHPx5oQHKBuVPc" +} diff --git a/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json b/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json new file mode 100644 index 00000000..b9474c28 --- /dev/null +++ b/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json @@ -0,0 +1,84 @@ +{ + "_id": "zhzVJz6WhSMMeTuY", + "name": "Blitzmacher", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "zcVXFPGvCoUuso15", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.lightning && @item.system.spellGroups.damage" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Blitzschadenszauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!zhzVJz6WhSMMeTuY.zcVXFPGvCoUuso15" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker ist geübt im Umgang mit Zaubersprüchen, die Blitze erzeugen.

\n

Er erhält auf alle Zauber, die Blitzschaden verursachen, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349662, + "modifiedTime": 1740227862747, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zhzVJz6WhSMMeTuY" +} diff --git a/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json b/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json new file mode 100644 index 00000000..6c911229 --- /dev/null +++ b/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json @@ -0,0 +1,32 @@ +{ + "_id": "9y7I3NIFuFC5lG4s", + "name": "Blocker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, im Kampf seinen Schild geschickt einzusetzen.

\n

In jeder Kampfrunde, in der er keine offensive Handlung unternimmt, dabei einen Schild führt und sich nicht einen Schritt bewegt, erhält er pro Talentrang +2 auf seine Abwehr gegen alle Angriffe, derer er sich bewusst ist und die nicht von hinten erfolgen. Zusätzlich kann er mit demselben Bonus KÖR+HÄ aktionsfrei würfeln, um im Kampf nicht zurückgedrängt zu werden (DS4 S. 44). Einmal pro Kampf kann ein Blocker pro Talentrang einen Patzer bei der Abwehr wiederholen, auch wenn er gerade eine offensiv Handlung unternimmt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349489, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9y7I3NIFuFC5lG4s" +} diff --git a/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json b/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json new file mode 100644 index 00000000..276dd512 --- /dev/null +++ b/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json @@ -0,0 +1,32 @@ +{ + "_id": "ODepf0g8Us5jBqLm", + "name": "Blutige Heilung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Kampf (außerhalb eines Kampfes beliebig oft) versuchen, sich mit der Kraft des eigenen Blutes zu heilen (zählt als eine freie Aktion, die einmal pro Runde möglich ist), was allerdings auch misslingen kann.

\n

Der Charakter würfelt dafür mit einem Probenwert gleich seiner eigenen Stufe.

\n

Bei einem Erfolg wird er um das doppelte Probenergebnis geheilt, bei einem Misserfolg erleidet er jedoch nicht abwehrbaren Schaden gleich seinem doppelten Talentrang. Bei einem Patzer ist das Talent außerdem W20 Stunden nicht mehr einsetzbar.

\n

Wird bei der blutigen Heilung das Talent @Compendium[ds4.talents.AM8Wp2ZVwWgbUXQz]{Macht des Blutes} angewendet, wird als dessen Bonus das Attribut KÖR bzw. GEI verwendet, was immer höher ist.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349530, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ODepf0g8Us5jBqLm" +} diff --git a/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json b/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json new file mode 100644 index 00000000..d6f52e39 --- /dev/null +++ b/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json @@ -0,0 +1,32 @@ +{ + "_id": "hUfTQbzMpbOH03qq", + "name": "Blutschild", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von 2 LK seine Abwehr für W20 Runden um +2 erhöhen (zählt als freie Aktion).

\n

Pro weiteren Talentrang können zwei weitere LK geopfert werden, welche die Abwehr um weitere +2 erhöhen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349606, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hUfTQbzMpbOH03qq" +} diff --git a/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json b/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json new file mode 100644 index 00000000..3f9d2c70 --- /dev/null +++ b/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json @@ -0,0 +1,84 @@ +{ + "_id": "ZnT8LMCRqZS3zpJO", + "name": "Brutaler Hieb", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "aC7UEoDRrwhs7j3U", + "changes": [ + { + "key": "system.checks.featOfStrength", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Kraftakt +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZnT8LMCRqZS3zpJO.aC7UEoDRrwhs7j3U" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schlagen für einen Angriff um den Wert von KÖR erhöhen.

\n

Es ist möglich, mehrere Talentränge in einem einzigen Schlag zu vereinen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349558, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZnT8LMCRqZS3zpJO" +} diff --git a/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json b/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json new file mode 100644 index 00000000..28a2f671 --- /dev/null +++ b/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json @@ -0,0 +1,90 @@ +{ + "_id": "pAOP7wkvhtsNIPQ8", + "name": "Charmant", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "PzOc07kYoWYygECD", + "changes": [ + { + "key": "system.checks.flirt", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.haggle", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Soziale Proben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pAOP7wkvhtsNIPQ8.PzOc07kYoWYygECD" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf sämtliche Proben sozialer Interaktion, beispielsweise um sympathisch aufzutreten oder eine Geschichte glaubhafter zu berichten, erhält der Charakter pro Talentrang einen Bonus von +2 (bei Vertretern des anderen Geschlechts sogar +3).

\n

Settingoption:
In vielen Settings ist es Zwergen verwehrt, dieses Talent zu erlernen.

\n

 

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349630, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pAOP7wkvhtsNIPQ8" +} diff --git a/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json b/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json new file mode 100644 index 00000000..7eb95447 --- /dev/null +++ b/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json @@ -0,0 +1,32 @@ +{ + "_id": "DZcu8KQFWChBVPRR", + "name": "Dämonen zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Dämonen führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349497, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DZcu8KQFWChBVPRR" +} diff --git a/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json b/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json new file mode 100644 index 00000000..53165336 --- /dev/null +++ b/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json @@ -0,0 +1,32 @@ +{ + "_id": "7H5VfdfMACJbv8bz", + "name": "Dämonenbrut", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe auf Wunsch bei einer Beschwörung einen weiteren Dämon gleichen Typs beschwören. Ein zusätzlicher Beschwörungskreis oder eine weitere Probe werden dafür nicht benötigt.

\n

Sollte die Beschwörung misslingen, wendet sich die gesamte Dämonenbrut gegen ihren Beschwörer.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349478, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7H5VfdfMACJbv8bz" +} diff --git a/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json b/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json new file mode 100644 index 00000000..bf018a58 --- /dev/null +++ b/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json @@ -0,0 +1,32 @@ +{ + "_id": "sThruiUnwaN9KHrP", + "name": "Dämonenzauber", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe einem einzelnen seiner beschworenen Dämonen einen seiner eigenen Zaubersprüche beibringen (dauert eine Aktion), mit Ausnahme des Zauberspruchs @Compendium[ds4.spells.yy43TiBbip28QRhs]{Dämonen beschwören}. Der jeweilige Dämon hat für die Dauer seiner Beschwörung den jeweiligen Zauber aktiv und kann ihn nach den normalen Regeln einsetzen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349643, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sThruiUnwaN9KHrP" +} diff --git a/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json b/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json new file mode 100644 index 00000000..22106f9d --- /dev/null +++ b/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json @@ -0,0 +1,108 @@ +{ + "_id": "VqzpRGrHclPSGLP0", + "name": "Diebeskunst", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "HQXZuzxIk1xmD1FQ", + "changes": [ + { + "key": "system.checks.disableTraps", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.openLock", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.workMechanism", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Diebeskunstproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!VqzpRGrHclPSGLP0.HQXZuzxIk1xmD1FQ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält einen Bonus von +2 pro Talentrang auf alle Proben, bei denen es darum geht, Fallen zu entdecken und zu entschärfen, fremde Taschen zu leeren, Schlösser zu öffnen oder Glücksspiele zu manipulieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349546, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!VqzpRGrHclPSGLP0" +} diff --git a/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json b/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json new file mode 100644 index 00000000..fbb9c721 --- /dev/null +++ b/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json @@ -0,0 +1,32 @@ +{ + "_id": "hAfZhfLqCjPvho3u", + "name": "Diener der Dunkelheit", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter dient den Mächten der Dunkelheit. Er erhält auf alle Angriffe gegen @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts}/@Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} einen Bonus von +1 pro Talentrang. Gleiches gilt für seine Abwehr gegen Schaden von Lichtzaubern.

\n

Charakter mit diesem Talent können nicht das Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erlernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349604, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!hAfZhfLqCjPvho3u" +} diff --git a/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json b/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json new file mode 100644 index 00000000..16992060 --- /dev/null +++ b/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json @@ -0,0 +1,32 @@ +{ + "_id": "Wwvj3V65hIe0JWul", + "name": "Diener des Lichts", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter dient den Mächten des Lichts. Er erhält gegen alle Angriffe von @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit}/@Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Dienern der Dunkelheit} einen Bonus von +1 pro Talentrang auf seine Abwehr. Gleiches gilt bei Schaden von Schattenzaubern.

\n

Charaktere, die gegen die Prinzipien des Lichts verstoßen (beispielsweise sinnlos Morden) verlieren Talentränge ersatzlos.

\n

Charaktere mit diesem Talent können nicht das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} erlernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349549, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Wwvj3V65hIe0JWul" +} diff --git a/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json b/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json new file mode 100644 index 00000000..78f2508c --- /dev/null +++ b/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json @@ -0,0 +1,32 @@ +{ + "_id": "MbPRlVBm0JsBoA6X", + "name": "Einbetten", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, um magische Gegenstände herzustellen (DS4 S. 101). Jeder Talentrang reduziert die Herstellungsdauer von magischen Gegenständen und gibt +1 auf Einbetten- Proben, um diese zu fertigen.

\n

Einbetten hilft zwar auch bei der Herstellung von Tränken bzw. Schriftrollen, dennoch wird dafür zunächst immer noch das Talent @Compendium[ds4.talents.XUyuomVVOxuSSKXl]{Alchemie} bzw. @Compendium[ds4.talents.t56WOCnxZwQWhajW]{Runenkunde} benötigt.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349520, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MbPRlVBm0JsBoA6X" +} diff --git a/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json b/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json new file mode 100644 index 00000000..76a52529 --- /dev/null +++ b/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json @@ -0,0 +1,141 @@ +{ + "_id": "ZvswuU2GqxDQwgpM", + "name": "Einstecker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "2rmByR3ov2nUHHEj", + "changes": [ + { + "key": "system.combatValues.hitPoints.total", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Lebenskraft +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZvswuU2GqxDQwgpM.2rmByR3ov2nUHHEj" + }, + { + "_id": "ulUx8SX4R1q1ikhw", + "changes": [ + { + "key": "system.checks.defyPoison", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.checks.resistDisease", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gift/Krankheit trotzen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!ZvswuU2GqxDQwgpM.ulUx8SX4R1q1ikhw" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, ordentlich Schaden einzustecken.

\n

Pro Talentrang steigt die Lebenskraft (LK) um +3.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349560, + "modifiedTime": 1740227862735, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ZvswuU2GqxDQwgpM" +} diff --git a/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json b/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json new file mode 100644 index 00000000..8bf36806 --- /dev/null +++ b/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json @@ -0,0 +1,32 @@ +{ + "_id": "11ZOcPcDIigrXvww", + "name": "Elementare bündeln", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist auf Wunsch bei einer Herbeirufung eine weitere Elementarstufe (I) herbeirufen.

\n

Der Elementarist muss vor der Herbeirufung schon festlegen, wie viele der zusätzlichen Elementare einzeln oder gebündelt – wodurch sich ihre Stufen (DS4 S. 53) bis maximal III addieren – erscheinen sollen. Ein zusätzliches Elementarportal oder Proben werden dafür nicht benötigt, aber der ZB entsprechend gesenkt.

\n

Sollte die Herbeirufung misslingen, wenden sich alle Elementare – gebündelte wie ungebündelte – gegen den Elementaristen.

", + "rank": { + "base": 0, + "max": 10, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349428, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!11ZOcPcDIigrXvww" +} diff --git a/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json b/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json new file mode 100644 index 00000000..a512603a --- /dev/null +++ b/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json @@ -0,0 +1,32 @@ +{ + "_id": "HFCY3fxIbeXapRan", + "name": "Elementen trotzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden erlittenen Schaden durch die Elemente (beispielsweise durch Blitze, Eis oder Feuer) aller Art ignorieren.

\n

Dies gilt auch für Schaden, der normalerweise nicht abgewehrt werden kann (beispielsweise durch den Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}).

\n

Die schützende Wirkung wird als freie Aktion ausgelöst und hält eine ununterbrochene Anzahl von Runden gleich dem dreifachen Talentrang an.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349504, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!HFCY3fxIbeXapRan" +} diff --git a/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json b/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json new file mode 100644 index 00000000..1ed55a17 --- /dev/null +++ b/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json @@ -0,0 +1,32 @@ +{ + "_id": "2ASdMhcx0hN3ZpPc", + "name": "Explosionskontrolle", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter eine Person (auch sich selbst) vor der Wirkung eines seiner eigenen Flächenzauber verschonen. Pro Talentrang kann er das Talent einmal pro Kampf einsetzen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349453, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2ASdMhcx0hN3ZpPc" +} diff --git a/packs/talents/F_rsorger_MdIritgH5eEAngSY.json b/packs/talents/F_rsorger_MdIritgH5eEAngSY.json new file mode 100644 index 00000000..0642fdba --- /dev/null +++ b/packs/talents/F_rsorger_MdIritgH5eEAngSY.json @@ -0,0 +1,84 @@ +{ + "_id": "MdIritgH5eEAngSY", + "name": "Fürsorger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "d2tT2smyOwGtpzlC", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && (@item.system.spellGroups.healing || @item.system.spellGroups.protection)" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heil- und Schutzzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!MdIritgH5eEAngSY.d2tT2smyOwGtpzlC" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist geübt im Umgang mit heilender und schützender Magie.

\n

Er erhält auf alle Heil- und Schutzzauber +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349522, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!MdIritgH5eEAngSY" +} diff --git a/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json b/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json new file mode 100644 index 00000000..d3425704 --- /dev/null +++ b/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json @@ -0,0 +1,84 @@ +{ + "_id": "8D01Z1kDIDcsuVCn", + "name": "Feuermagier", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "MbXCCUny8g0DURC5", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.fire" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feuerzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!8D01Z1kDIDcsuVCn.MbXCCUny8g0DURC5" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker ist geübt im Umgang mit Feuermagie. Er erhält auf alle Zauber, die einen Feuereffekt haben, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349480, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8D01Z1kDIDcsuVCn" +} diff --git a/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json b/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json new file mode 100644 index 00000000..ce6e43b3 --- /dev/null +++ b/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json @@ -0,0 +1,32 @@ +{ + "_id": "srLA4jC8lsZbp3nT", + "name": "Fieser Schuss", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schießen einen Angriff lang um den Wert von Agilität erhöhen. Es ist möglich, mehrere Talentränge in einem einzigen Schuß zu vereinen. Zielzauber profitieren nicht von diesem Talent.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349648, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!srLA4jC8lsZbp3nT" +} diff --git a/packs/talents/Flink_v5axYsQQ2w57Iu4p.json b/packs/talents/Flink_v5axYsQQ2w57Iu4p.json new file mode 100644 index 00000000..73dfc36a --- /dev/null +++ b/packs/talents/Flink_v5axYsQQ2w57Iu4p.json @@ -0,0 +1,84 @@ +{ + "_id": "v5axYsQQ2w57Iu4p", + "name": "Flink", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "fDKyU3R0ACgW9uw3", + "changes": [ + { + "key": "system.combatValues.movement.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Laufen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!v5axYsQQ2w57Iu4p.fDKyU3R0ACgW9uw3" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist schnell und gut zu Fuß. Der Wert für Laufen wird pro Erwerb des Talents um 1 erhöht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349653, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v5axYsQQ2w57Iu4p" +} diff --git a/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json b/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json new file mode 100644 index 00000000..a95dbee0 --- /dev/null +++ b/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json @@ -0,0 +1,32 @@ +{ + "_id": "lvBKtlBcyVldzsrw", + "name": "Friedvoller Hieb", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen friedvollen Hieb mittels eines waffenlosen Angriffs ausführen. Das Resultat wird wie gewohnt ermittelt (also abzüglich der Abwehr), allerdings wird kein Schaden erzeugt, stattdessen ist das Opfer für 1 Runde pro letztendlich erhaltenem Schadenspunkt gelähmt.

\n

Wird das gelähmte Ziel anderweitig angegriffen, wozu auch geistesbeeinflussende Zauber u. ä. zählen, endet die Wirkung.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349623, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lvBKtlBcyVldzsrw" +} diff --git a/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json b/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json new file mode 100644 index 00000000..d1750511 --- /dev/null +++ b/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json @@ -0,0 +1,32 @@ +{ + "_id": "2jZY66sVnHSIFq7P", + "name": "Frontheiler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Heiler einmal alle 24 Stunden die Abklingzeit eines Heilzaubers (so auch @Compendium[ds4.spells.duf86LKvOIyDXJbc]{Wiederbelebung}) ignorieren.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349456, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2jZY66sVnHSIFq7P" +} diff --git a/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json b/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json new file mode 100644 index 00000000..19fde36f --- /dev/null +++ b/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json @@ -0,0 +1,84 @@ +{ + "_id": "UUYS4u0DmEbGzXxI", + "name": "Genesung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "j6Npl52FgDvkTwk7", + "changes": [ + { + "key": "system.attributes.body.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Körper +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!UUYS4u0DmEbGzXxI.j6Npl52FgDvkTwk7" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

War ein Charakter vorübergehend tot und hat dadurch Punkte des Attributs KÖR eingebüßt, kann pro Talentrang +1 KÖR wiederhergestellt werden.

\n

Es ist mit diesem Talent nicht möglich, KÖR über den ursprünglichen Wert zu steigern.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349544, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!UUYS4u0DmEbGzXxI" +} diff --git a/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json b/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json new file mode 100644 index 00000000..be421d9b --- /dev/null +++ b/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json @@ -0,0 +1,32 @@ +{ + "_id": "nMxDermxN1pUziUJ", + "name": "Gerüstet", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jeder Rang dieses Talentes gestattet es dem Charakter, die nächste Klasse (Stoff, Leder, Kette, Platte) von Rüstungen zu tragen. So kann ein Kleriker, der das Talent erstmalig erwirbt, Rüstungen aus Kette wie ein Späher tragen (allerdings weiterhin keine Helme, DS4 S. 41), statt wie bislang nur Rüstungen aus Stoff oder Leder.

\n

Die normalen Abzügen durch die Rüstung in Höhe ihrer PA, beispielsweise beim Zaubern, bleiben allerdings bestehen. Um diese zu senken, wird das Talent @Compendium[ds4.talents.lXzQsIobk5yaZ47a]{Rüstzauberer} benötigt.

", + "rank": { + "base": 0, + "max": 2, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349626, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nMxDermxN1pUziUJ" +} diff --git a/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json b/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json new file mode 100644 index 00000000..ab1eb747 --- /dev/null +++ b/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json @@ -0,0 +1,32 @@ +{ + "_id": "8nkrwGAE0HPoAAEm", + "name": "Gezieltes Gift", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Attentäter kennt die Stellen, wo man im Kampf den Gegner treffen muss, damit ein Waffengift seine Wirkung ideal entfalten kann.

\n

Pro Talentrang werden bei seinen Angriffen mit vergifteten Waffen Schadensgifte um +2 Schaden, Betäubungsgifte um +2 Minuten und Lähmungsgifte um +2 Runden erhöht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349482, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8nkrwGAE0HPoAAEm" +} diff --git a/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json b/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json new file mode 100644 index 00000000..73320c08 --- /dev/null +++ b/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json @@ -0,0 +1,32 @@ +{ + "_id": "Y6nYTc9XJnmV9ZxX", + "name": "Glückspilz", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein wahrer Glückspilz, kann er doch einmal pro Talentrang alle 24 Stunden einen Patzer ignorieren und den jeweiligen Wurf wiederholen.

\n

Sollte der neue Wurf ebenfalls ein Patzer sein, man aber über mehr als einen Talentrang verfügt, kann dieser ebenfalls ausgeglichen werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349556, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Y6nYTc9XJnmV9ZxX" +} diff --git a/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json b/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json new file mode 100644 index 00000000..6fae07b6 --- /dev/null +++ b/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json @@ -0,0 +1,32 @@ +{ + "_id": "vnEDVqVCsZuf8NYN", + "name": "Handwerk", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jede Handwerksart (Bogenbauer, Schreiner, Steinmetz, Waffenschmied usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Handwerk und erhält auf alle diesbezüglichen Proben, sei es um Gegenstände herzustellen oder beschädigte Ausrüstung zu reparieren (DS4 S. 88), einen Bonus von +3 pro Talentrang, den man für dieses Handwerk erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349655, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!vnEDVqVCsZuf8NYN" +} diff --git a/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json b/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json new file mode 100644 index 00000000..a478d97d --- /dev/null +++ b/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json @@ -0,0 +1,102 @@ +{ + "_id": "sqGJRKlgFoD2vLCD", + "name": "Heimlichkeit", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "MBeD0OrohtuDdSFy", + "changes": [ + { + "key": "system.checks.hide", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.pickPocket", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.sneak", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Heimlichkeitsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!sqGJRKlgFoD2vLCD.MBeD0OrohtuDdSFy" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Schleicher und versteht sich darauf, nicht bemerkt zu werden.

\n

Er erhält +2 auf alle Proben, bei denen es darum geht, leise zu sein, sich zu verbergen, nicht bemerkt zu werden oder etwas heimlich zu tun, wie beispielsweise Taschendiebstahl.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349645, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sqGJRKlgFoD2vLCD" +} diff --git a/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json b/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json new file mode 100644 index 00000000..39130d3e --- /dev/null +++ b/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json @@ -0,0 +1,32 @@ +{ + "_id": "WMXI5ckyEdlC29j4", + "name": "Heldenglück", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist wahrlich vom Glück gesegnet, kann er doch einmal pro Talentrang alle 24 Stunden einen beliebigen Würfelwurf wiederholen.

\n

Sollte das neue Wurfergebnis ebenfalls nicht gefallen, kann man erneut die Probe wiederholen, sofern man noch über weitere Talentränge verfügt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349548, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!WMXI5ckyEdlC29j4" +} diff --git a/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json b/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json new file mode 100644 index 00000000..6f8a550e --- /dev/null +++ b/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json @@ -0,0 +1,32 @@ +{ + "_id": "6YJLvjCIUmhqlaFb", + "name": "Herausforderer der Elemente", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Elementar Harbeirufen (@Compendium[ds4.spells.9GBDoyVXPXjWoLix]{Erde}, @Compendium[ds4.spells.8BT2TqPHC0v2OzNe]{Feuer}, @Compendium[ds4.spells.PXIVHRBpLwlzrk3L]{Luft}, @Compendium[ds4.spells.ftDPIhLCVRLRpOix]{Wasser}) ignorieren. Alternativ kann dies auch bei einem Zauber angewendet werden, der Elementarschaden verursacht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349472, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6YJLvjCIUmhqlaFb" +} diff --git a/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json b/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json new file mode 100644 index 00000000..983da479 --- /dev/null +++ b/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json @@ -0,0 +1,84 @@ +{ + "_id": "w34myctr1EDmXSPI", + "name": "Herr der Elemente", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "UZeS8KqoBFS8oY35", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.damage && (@item.system.spellGroups.lightning || @item.system.spellGroups.earth || @item.system.spellGroups.water || @item.system.spellGroups.ice || @item.system.spellGroups.fire || @item.system.spellGroups.air)" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Elementarschadenszauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!w34myctr1EDmXSPI.UZeS8KqoBFS8oY35" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist geübt im Freisetzen elementarer Kräfte.

\n

Er erhält auf alle Zauber, die Schaden verursachen, der auf den Elementen Erde, Feuer, Luft (hierzu zählen auch Blitzzauber) oder Wasser (hierzu zählen auch Eiszauber) basiert, einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349657, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!w34myctr1EDmXSPI" +} diff --git a/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json b/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json new file mode 100644 index 00000000..5e51d5c4 --- /dev/null +++ b/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json @@ -0,0 +1,32 @@ +{ + "_id": "8apgKsktW4pyWmMq", + "name": "Hinterhältiger Angriff", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Kampf kann der Attentäter einen Gegner mit einem hinterhältigen Angriff im Nahkampf attackieren, sofern er einen Dolch, ein Messer oder eine Würgewaffe (Draht, Schur usw.) dafür benutzt und das Opfer sich des Angriffs nicht gewahr ist. Dafür wird in dieser Runde sein Wert in Schlagen um GE – multipliziert mit dem Talentrang – erhöht.

\n

Wurde durch den hinterhältigen Angriff der Kampf eröffnet, kann das Ziel (sofern der hinterhältigen Angriff auch gelang) in dieser Runde nicht mehr agieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349481, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8apgKsktW4pyWmMq" +} diff --git a/packs/talents/Homonkulus_de0VlXllMzMK8lga.json b/packs/talents/Homonkulus_de0VlXllMzMK8lga.json new file mode 100644 index 00000000..ad9a2885 --- /dev/null +++ b/packs/talents/Homonkulus_de0VlXllMzMK8lga.json @@ -0,0 +1,32 @@ +{ + "_id": "de0VlXllMzMK8lga", + "name": "Homonkulus", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Erzmagier erschafft Kraft seiner Magie einen kleinen, magischen, humanoiden Begleiter, der ihm beim Zaubern helfen kann.

\n

Der Homunkulus hat KÖR, AGI und GEI jeweils 4 und verfügt über 6 Punkte für Eigenschaften, die der Erzmagier frei verteilen kann.

\n

Homunkuli sind klein (halbe LK, zu treffen -2) und können nur Grunzlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Erschaffers.

\n

Befindet sich der Homunkulus nicht mehr als AU x 5 (des Charakters) in Metern von dem Erzmagier entfernt, kann er ihm pro Talentrang einen aufteilbaren Bonus von +2 auf VE und/oder AU geben.

\n

Die genaue Verteilung kann der Erzmagier jede Runde als freie Handlung umändern. Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf Homunkuli anzuwenden.

\n

Homunkuli sind äußerst feige und scheuen den Kampf. Sie ergreifen die Flucht, sobald sie Schaden erhalten und kehren erst zu ihrem Erschaffer zurück, wenn die Gefahr vorüber ist, dann jedoch so schnell wie möglich. Dank der Fähigkeit, ihren Erschaffer und seine Gemütslage zu spüren, stellt dies für sie kein Problem dar.

\n

Stirbt ein Homunkulus, kann der Erzmagier innerhalb von W20 Stunden einen neuen erschaffen, sofern er in dieser Zeit Zugang zu einem Alchimistenlabor hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349576, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!de0VlXllMzMK8lga" +} diff --git a/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json b/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json new file mode 100644 index 00000000..8f33b059 --- /dev/null +++ b/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json @@ -0,0 +1,32 @@ +{ + "_id": "42FNsShgm1B6MClC", + "name": "Ich muss weg!", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter in jedem Kampf für jeweils eine Runde sämtliche gegen ihn gerichteten Nahkampfangriffe komplett ignorieren.

\n

Dabei darf er aber seine Gegner nicht attackieren, sondern muss sich dabei um mindestens 2 m von ihnen entfernen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349462, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!42FNsShgm1B6MClC" +} diff --git a/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json b/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json new file mode 100644 index 00000000..8b9cc577 --- /dev/null +++ b/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json @@ -0,0 +1,32 @@ +{ + "_id": "cLkCx5hxP7rVYUqD", + "name": "In Deckung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, im Kampf geschickt in die Defensive zu gehen.

\n

Pro Talentrang werden in jeder Kampfrunde, in der er keine offensive Handlung unternimmt, alle Angriffe gegen ihn um 2 gesenkt, sofern er sich ihrer bewusst ist.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349573, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!cLkCx5hxP7rVYUqD" +} diff --git a/packs/talents/Instrument_Nu7TKGp987s5mHA0.json b/packs/talents/Instrument_Nu7TKGp987s5mHA0.json new file mode 100644 index 00000000..53777987 --- /dev/null +++ b/packs/talents/Instrument_Nu7TKGp987s5mHA0.json @@ -0,0 +1,32 @@ +{ + "_id": "Nu7TKGp987s5mHA0", + "name": "Instrument", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jedes Instrument (Flöte, Mandoline, Harfe, Trommel usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Instrument und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Instrument erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349529, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Nu7TKGp987s5mHA0" +} diff --git a/packs/talents/J_ger_61Dz3XpStwlMfsbL.json b/packs/talents/J_ger_61Dz3XpStwlMfsbL.json new file mode 100644 index 00000000..1201dc4c --- /dev/null +++ b/packs/talents/J_ger_61Dz3XpStwlMfsbL.json @@ -0,0 +1,90 @@ +{ + "_id": "61Dz3XpStwlMfsbL", + "name": "Jäger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "1YQV8nWWzoU30KHR", + "changes": [ + { + "key": "system.checks.startFire", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.readTracks", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Jagdproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!61Dz3XpStwlMfsbL.1YQV8nWWzoU30KHR" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter wandert oft durch die Wildnis und erhält durch dieses Talent +2 auf Proben, mit denen Spuren gelesen, Wild gejagt oder die richtige Marschrichtung wiedergefunden werden soll.

\n

Pro Talentrang kann außerdem eine Mahlzeit (von denen 3 einer Tagesration entsprechen) problemlos beschafft werden (Beeren pflücken, Kleintier erlegen usw.).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349470, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!61Dz3XpStwlMfsbL" +} diff --git a/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json b/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json new file mode 100644 index 00000000..c431fd1f --- /dev/null +++ b/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json @@ -0,0 +1,84 @@ +{ + "_id": "6z0JXGEqdzDTWQ7f", + "name": "Kämpfer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "XkW7XqOCXg2e4OTo", + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlagen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6z0JXGEqdzDTWQ7f.XkW7XqOCXg2e4OTo" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Nahkämpfer: Er erhält pro Talentrang auf Schlagen einen Bonus von +1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349475, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6z0JXGEqdzDTWQ7f" +} diff --git a/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json b/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json new file mode 100644 index 00000000..16ca561e --- /dev/null +++ b/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json @@ -0,0 +1,32 @@ +{ + "_id": "XNjKX9xKkktkwAHk", + "name": "Kann ich mal vorbei?", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Meisterdieb kann einmal alle 24 Stunden pro Talentrang eine Zielperson durch Ansprechen, Vorbeidrängeln etc. derart ablenken, dass sämtliche Bemerken-Proben gegen Taschendiebstahl u.ä. dieser Person für Talentrang in Runden um die Stufe des Meisterdiebes erschwert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349551, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XNjKX9xKkktkwAHk" +} diff --git a/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json b/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json new file mode 100644 index 00000000..0b1a5d3c --- /dev/null +++ b/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json @@ -0,0 +1,84 @@ +{ + "_id": "l0le4xG5t0gUh2Y1", + "name": "Kletterass", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "GlAlx4yvg5rCHu20", + "changes": [ + { + "key": "system.checks.climb", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Klettern +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!l0le4xG5t0gUh2Y1.GlAlx4yvg5rCHu20" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter erhält auf alle Klettern- Probe einen Bonus von +2 pro Talentrang und die normale Klettergeschwindigkeit von Laufen/2 wird pro Talentrang um 1 m erhöht.

\n

Außerdem kann der Charakter an überhängenden Wänden oder gar kopfüber an Decken ganz „normal“ klettern (also diesbezügliche Mali ignorieren), sofern diese nicht gänzlich eben sind, sondern über Vorsprünge, Stalagtiten, Mauerfugen o. ä. verfügen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349617, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!l0le4xG5t0gUh2Y1" +} diff --git a/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json b/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json new file mode 100644 index 00000000..1764a520 --- /dev/null +++ b/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json @@ -0,0 +1,32 @@ +{ + "_id": "Bp7OVgurG40CR1Mw", + "name": "Knechtschaft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter jeder selbst beschworenen bzw. selbst herbeigerufenen Wesenheit eine weitere Frage stellen bzw. einen weiteren Auftrag erteilen und die Zeit, die das Wesen ihm dienen muss, um 1 Stunde verlängern.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349493, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Bp7OVgurG40CR1Mw" +} diff --git a/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json b/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json new file mode 100644 index 00000000..4b816f97 --- /dev/null +++ b/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json @@ -0,0 +1,32 @@ +{ + "_id": "lim7XMqSaQ0nrHkO", + "name": "Kraft der Bestie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Druide alle seine zur Verfügung stehenden Kampfwerte in @Compendium[ds4.talents.sSKiZ5hdQMBnAYRA]{Adler-}, @Compendium[ds4.talents.8pylauN1hY933vrQ]{Bären-} oder @Compendium[ds4.talents.iP5aZcqriVLjdVcd]{Tiergestalt} um jeweils +2 erhöhen.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349622, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lim7XMqSaQ0nrHkO" +} diff --git a/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json b/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json new file mode 100644 index 00000000..80096ef3 --- /dev/null +++ b/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json @@ -0,0 +1,32 @@ +{ + "_id": "sqWBOfkvuv7ZTrVM", + "name": "Kreiszeichner", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Meister im Zeichnen von Beschwörungskreisen und kann pro Talentrang 2 weitere Stunden Arbeit in sie investieren. Zusätzlich wird der Zeitaufwand von jeder Stunden, die an dem Kreis gezeichnet wird, um 15 Minuten pro Talentrang gesenkt. Außerdem gewährt das Talent +1 pro Talentrang beim Beschwören, selbst wenn dies nur mit einem improvisierten Beschwörungskreis geschieht.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349647, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!sqWBOfkvuv7ZTrVM" +} diff --git a/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json b/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json new file mode 100644 index 00000000..929b6977 --- /dev/null +++ b/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json @@ -0,0 +1,32 @@ +{ + "_id": "pDPVZpnhvlabmcvT", + "name": "Langfinger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Bei Versuchen, Leute zu bestehlen, kann der Meisterdieb einmal alle 24 Stunden pro Talentrang AGI zu seiner Probe auf Taschendiebstahl dazu addieren.

\n

Es ist möglich, mehrere Talentränge in einer einzelnen Probe zu vereinen. Ebenso ist es natürlich mit @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349632, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pDPVZpnhvlabmcvT" +} diff --git a/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json b/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json new file mode 100644 index 00000000..14301cf4 --- /dev/null +++ b/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json @@ -0,0 +1,32 @@ +{ + "_id": "pEH7q5M85j50f45J", + "name": "Mächtige Beschwörung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe Punkte in Höhe von seinem Wert in GEI bei jedem seiner beschworenen Dämonen auf dessen Kampfwerte beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349635, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pEH7q5M85j50f45J" +} diff --git a/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json b/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json new file mode 100644 index 00000000..ffad02c9 --- /dev/null +++ b/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json @@ -0,0 +1,32 @@ +{ + "_id": "2zY11r1tKxBzNB0e", + "name": "Mächtige Erweckung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Nekromant Punkte in Höhe von GEI/2 auf die Kampfwerte eines jeden von ihm erweckten Untoten beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349457, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!2zY11r1tKxBzNB0e" +} diff --git a/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json b/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json new file mode 100644 index 00000000..91c9e47d --- /dev/null +++ b/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json @@ -0,0 +1,32 @@ +{ + "_id": "wpZ1LCG8nLu4PSc9", + "name": "Mächtige Herbeirufung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Elementarist Punkte in Höhe von seinem Wert in GEI bei jedem seiner herbeigerufenen Elementare auf dessen Kampfwerte beliebig verteilen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349657, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!wpZ1LCG8nLu4PSc9" +} diff --git a/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json b/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json new file mode 100644 index 00000000..58c888cc --- /dev/null +++ b/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json @@ -0,0 +1,32 @@ +{ + "_id": "AM8Wp2ZVwWgbUXQz", + "name": "Macht des Blutes", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen.

\n

Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden.

\n

Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen.

\n

Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349491, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AM8Wp2ZVwWgbUXQz" +} diff --git a/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json b/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json new file mode 100644 index 00000000..cfb75b6e --- /dev/null +++ b/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json @@ -0,0 +1,32 @@ +{ + "_id": "bu9alxaRfnzzTyX1", + "name": "Macht des Blutes", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen. Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden. Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen. Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349571, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bu9alxaRfnzzTyX1" +} diff --git a/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json b/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json new file mode 100644 index 00000000..7d41d059 --- /dev/null +++ b/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json @@ -0,0 +1,32 @@ +{ + "_id": "yMVciLvr77vbTw6r", + "name": "Magieresistent", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Gegen den Charakter gerichtete Zauber werden um +2 pro Talentrang erschwert. Dies gilt jedoch nicht für Zauber, die Elementarschaden (beispielsweise mit Blitzen, Eis oder Feuer) verursachen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349660, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yMVciLvr77vbTw6r" +} diff --git a/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json b/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json new file mode 100644 index 00000000..b2583540 --- /dev/null +++ b/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json @@ -0,0 +1,84 @@ +{ + "_id": "Mz5glQvRowlF5U8X", + "name": "Manipulator", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "WS2cnABb8FYRhtpJ", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.mindAffecting" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Geistesbeeinflusende Zauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!Mz5glQvRowlF5U8X.WS2cnABb8FYRhtpJ" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein Meister der magischen Beeinflussung des Geistes.

\n

Er erhält auf alle geistesbeeinflussenden Zauber einen Bonus von +1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349524, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Mz5glQvRowlF5U8X" +} diff --git a/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json b/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json new file mode 100644 index 00000000..5e60c9d7 --- /dev/null +++ b/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json @@ -0,0 +1,32 @@ +{ + "_id": "nbDef1IPNyYcXmua", + "name": "Meister aller Klassen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann eines seiner drei Attribute (KÖR, AGI oder GEI) um +1 steigern.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349627, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!nbDef1IPNyYcXmua" +} diff --git a/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json b/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json new file mode 100644 index 00000000..0a1a380d --- /dev/null +++ b/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json @@ -0,0 +1,32 @@ +{ + "_id": "DUexlPzqyH2xPxYP", + "name": "Meister seiner Klasse", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann das primäre Attribut seiner Klasse um +1 steigern:

\n

Krieger steigern KÖR, Späher steigern AGI und Zauberwirker steigern GEI.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349495, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!DUexlPzqyH2xPxYP" +} diff --git a/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json b/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json new file mode 100644 index 00000000..21ae69ae --- /dev/null +++ b/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json @@ -0,0 +1,32 @@ +{ + "_id": "G3fbdAorLMCa2hGu", + "name": "Meucheln", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Senkt die Abwehr des Gegners gegen Schaden durch das Talent @Compendium[ds4.talents.8apgKsktW4pyWmMq]{Hinterhältiger Angriff} um 5 pro Talentrang.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349500, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!G3fbdAorLMCa2hGu" +} diff --git a/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json b/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json new file mode 100644 index 00000000..d673a966 --- /dev/null +++ b/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json @@ -0,0 +1,84 @@ +{ + "_id": "oxWYfqhbcsDoaaUJ", + "name": "Nekromantie", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "pgGKKWy5nLTSdp8l", + "changes": [ + { + "key": "system.spellModifier.numerical", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.spellGroups.necromancy" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Nekromantie +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!oxWYfqhbcsDoaaUJ.pgGKKWy5nLTSdp8l" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kennt sich sehr gut mit nekromantischen Zaubern aus.

\n

Er erhält auf alle Zauber, die Untote bannen, erwecken oder kontrollieren, einen Bonus von +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349628, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!oxWYfqhbcsDoaaUJ" +} diff --git a/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json b/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json new file mode 100644 index 00000000..cb33bd76 --- /dev/null +++ b/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json @@ -0,0 +1,32 @@ +{ + "_id": "PRkbeuKFTWd8Ja3Q", + "name": "Panzerung zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Jedesmal, wenn ein Charakter mit einem Nahkampfangriff bei einem Gegner Schaden verursacht, sinkt der PA-Wert eines zufällig zu ermittelnden Rüstungsteils des Opfers um 1 Punkt pro Talentrang.

\n

Welches einzelne Rüstungsteil der getragenen Panzerung betroffen ist, wird zufällig ermittelt.

\n

Wird dabei ein magisches Rüstungsteil getroffen, zeigt das Talent allerdings keine Wirkung.

\n

Sinkt der PA-Wert eines Rüstungsteils auf Null oder niedriger, gilt es als zerstört, kann aber von einem findigen Handwerker wieder repariert werden (DS4 S. 88).

\n

Gegen natürliche Rüstungen (Chitinpanzer, Drachenschuppen, Hornpanzer u. ä.) ist das Talent dagegen wirkungslos.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349533, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!PRkbeuKFTWd8Ja3Q" +} diff --git a/packs/talents/Parade_8wHCsoZEQp3rScWe.json b/packs/talents/Parade_8wHCsoZEQp3rScWe.json new file mode 100644 index 00000000..f1858811 --- /dev/null +++ b/packs/talents/Parade_8wHCsoZEQp3rScWe.json @@ -0,0 +1,32 @@ +{ + "_id": "8wHCsoZEQp3rScWe", + "name": "Parade", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat gelernt, die Nahkampfangriffe seiner Gegner zu parieren.

\n

Sofern er eine Nahkampfwaffe gezogen hat, erhält der Charakter pro Talentrang +1 auf seine Abwehr gegen jeden Nahkampfangriff, dessen er sich bewusst ist und der nicht von hinten erfolgt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349485, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!8wHCsoZEQp3rScWe" +} diff --git a/packs/talents/Perfektion_iI1SP1214SpIzBCW.json b/packs/talents/Perfektion_iI1SP1214SpIzBCW.json new file mode 100644 index 00000000..05d91fce --- /dev/null +++ b/packs/talents/Perfektion_iI1SP1214SpIzBCW.json @@ -0,0 +1,32 @@ +{ + "_id": "iI1SP1214SpIzBCW", + "name": "Perfektion", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann die Boni auf Schlagen und Gegnerabwehr eines bereits erworbenen @Compendium[ds4.talents.v9ocoi91dKJahAe3]{Waffenkennertalents} für eine einzelne Waffenart pro Talentrang um +1 steigern.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349607, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iI1SP1214SpIzBCW" +} diff --git a/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json b/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json new file mode 100644 index 00000000..73443373 --- /dev/null +++ b/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json @@ -0,0 +1,32 @@ +{ + "_id": "GVuVyP3uLw3Fkiwf", + "name": "Prügler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Wird bei einem Angriff mit stumpfen Waffen, Äxten oder zweihändigen Waffen ein Immersieg erzielt, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349501, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GVuVyP3uLw3Fkiwf" +} diff --git a/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json b/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json new file mode 100644 index 00000000..57003939 --- /dev/null +++ b/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json @@ -0,0 +1,32 @@ +{ + "_id": "NSBiWy4FTIu6Y2Vv", + "name": "Präziser Schuss", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Späher einmal alle 24 Stunden mit einem Fernkampfangriff einen präzisen Schuss abfeuern, gegen den keine Abwehr gewürfelt wird.

\n

Der präzise Schuss muss vor dem Würfeln der Schießen-Probe angesagt werden und kann pro Talentrang mit einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss}) kombiniert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349527, + "modifiedTime": 1740227862730, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NSBiWy4FTIu6Y2Vv" +} diff --git a/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json b/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json new file mode 100644 index 00000000..e44d7675 --- /dev/null +++ b/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json @@ -0,0 +1,32 @@ +{ + "_id": "3AkPGw4beW52LIAY", + "name": "Rüstträger", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist es gewohnt, schwere Rüstung zu tragen und sich in ihr zu bewegen. Der durch Rüstung verursachte Malus auf Laufen wird pro Talentrang um 0,5 gemindert.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349459, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!3AkPGw4beW52LIAY" +} diff --git a/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json b/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json new file mode 100644 index 00000000..728700bd --- /dev/null +++ b/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json @@ -0,0 +1,84 @@ +{ + "_id": "lXzQsIobk5yaZ47a", + "name": "Rüstzauberer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "BBiQrltkYi3Jo0Am", + "changes": [ + { + "key": "system.armorValueSpellMalus", + "mode": 2, + "value": "-2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Panzerungs-Zaubermalus -2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lXzQsIobk5yaZ47a.BBiQrltkYi3Jo0Am" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann ein Panzerungsmalus (PA) in Höhe von 2 beim Zaubern/Zielzaubern ignoriert werden. Beispielsweise benötigt es 2 Talentränge, um ungehindert in einem @Compendium[ds4.equipment.t13RJoXrsS0HAyIQ]{Plattenpanzer} (PA 3) samt @Compendium[ds4.equipment.fKhTsMO4YXDYY8GX]{Metallhelm} (PA 1) zaubern zu können.

", + "rank": { + "base": 0, + "max": 1, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349620, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lXzQsIobk5yaZ47a" +} diff --git a/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json b/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json new file mode 100644 index 00000000..8f373674 --- /dev/null +++ b/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json @@ -0,0 +1,90 @@ +{ + "_id": "pC1K0VHWTpaJqwtt", + "name": "Raserei", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "YPU4v5VXXeRcscmP", + "changes": [ + { + "key": "system.combatValues.meleeAttack.total", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": true, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schlagen +2, Abwehr -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!pC1K0VHWTpaJqwtt.YPU4v5VXXeRcscmP" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Berserker kann pro Talentrang seine Abwehr um 1 Punkt mindern und dadurch seinen Wert in Schlagen um +2 erhöhen.

\n

Diese Umschichtung kann jede Runde geändert werden (zählt als freie Aktion).

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349631, + "modifiedTime": 1740227862741, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!pC1K0VHWTpaJqwtt" +} diff --git a/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json b/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json new file mode 100644 index 00000000..6bb6ee60 --- /dev/null +++ b/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json @@ -0,0 +1,84 @@ +{ + "_id": "bA8wUU0bKouuxkQ5", + "name": "Reiten", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "d5V2GjfkccIubrfY", + "changes": [ + { + "key": "system.checks.ride", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!bA8wUU0bKouuxkQ5.d5V2GjfkccIubrfY" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Charaktere mit diesem Talent haben reiten gelernt, können also problemlos die Richtung oder Geschwindigkeit ihres Reittieres um einen Schritt ändern und vom Pferderücken aus angreifen (DS4 S. 92).

\n

Pro Talentrang erhalten sie bei Sprüngen oder Proben, um die Reitrichtung oder die Geschwindigkeit um mehr als einen Schritt zu wechseln, einen Bonus von +2. Im berittenen Kampf erhalten sie pro Talentrang +1 auf Schlagen-Proben gegen unberittene Gegner.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349567, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!bA8wUU0bKouuxkQ5" +} diff --git a/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json b/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json new file mode 100644 index 00000000..7dd98e7c --- /dev/null +++ b/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json @@ -0,0 +1,102 @@ +{ + "_id": "g4XI9wikUdxoCFNg", + "name": "Ritual der Narben", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "t1DVGkDGOwrjFccz", + "changes": [ + { + "key": "system.combatValues.defense.total", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.combatValues.hitPoints.total", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.checks.flirt", + "mode": 2, + "value": "-1", + "priority": null + }, + { + "key": "system.checks.haggle", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Abwehr +2, soziale Proben -1, Lebenskraft -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!g4XI9wikUdxoCFNg.t1DVGkDGOwrjFccz" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhält der Charakter permanent einen magischen Bonus von +2 auf seine Abwehr. Die gesamte Haut des Charakters ist nach diesem Ritual durch vernarbte Runen entstellt, was ihm bei Proben auf soziale Interaktion einen Malus von -1 pro Talentrang einbringt. Außerdem hat das Ritual seinen Preis:

\n

Der Charakter verliert pro Talentrang permanent 1 Punkt Lebenskraft (LK).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349592, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!g4XI9wikUdxoCFNg" +} diff --git a/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json b/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json new file mode 100644 index 00000000..0fd81e0d --- /dev/null +++ b/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json @@ -0,0 +1,32 @@ +{ + "_id": "RTLVQgPmjiPDdTFw", + "name": "Rundumschlag", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann mit einer Zweihandwaffe per Rundumschlag pro Talentrang einen weiteren, angrenzende Gegner mit seinem Schlag treffen. Für jeden weiteren Feind, den er per Rundumschlag treffen will, wird der Schlagen-Wert (es wird nur eine einzige Probe für den ganzen Rundumschlag gewürfelt) um 1 und die Abwehr um 2 gesenkt, bis der Charakter wieder an der Reihe ist.

\n

Kampfmönche können dieses Talent nur waffenlos in Verbindung mit dem Talent @Compendium[ds4.talents.1VAiKGCnqKfNC8AE]{Waffenloser Meister} benutzen. Dabei kann der Talentrang von Rundumschlag nie höher sein als der von Waffenloser Meister.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349541, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RTLVQgPmjiPDdTFw" +} diff --git a/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json b/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json new file mode 100644 index 00000000..ebb1583c --- /dev/null +++ b/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json @@ -0,0 +1,32 @@ +{ + "_id": "t56WOCnxZwQWhajW", + "name": "Runenkunde", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird benötigt, will man Schriftrollen herstellen (DS4 S. 101). Jeder Talentrang reduziert die Zubereitungsdauer von Schriftrollen und gibt +1 auf Proben, um diese zu fertigen, oder gefundene Schriftrollen zu identifizieren. Es handelt sich bei den magischen Runen auf einer Schriftrolle um keine tatsächlichen Schriftzeichen, die man lesen, geschweige denn übersetzen könnte.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349649, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!t56WOCnxZwQWhajW" +} diff --git a/packs/talents/Salve_zvZelUv5qQz3adKN.json b/packs/talents/Salve_zvZelUv5qQz3adKN.json new file mode 100644 index 00000000..de3724db --- /dev/null +++ b/packs/talents/Salve_zvZelUv5qQz3adKN.json @@ -0,0 +1,32 @@ +{ + "_id": "zvZelUv5qQz3adKN", + "name": "Salve", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Einmal pro Kampf kann der Charakter mit einer Fernkampfwaffe einen zusätzlichen Schuss pro Talentrang abfeuern. Bei mehreren Talenträngen können die zusätzlichen Schüsse alle zusammen in einer Runde gebündelt abgefeuert werden oder aufgeteilt in einzelnen Runden.

\n

Die einzelnen Schüsse werden dabei als eigenständige Angriffe behandelt, können also beispielsweise nicht mehrfach durch das Talent @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss} aufgebessert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349663, + "modifiedTime": 1740227862747, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!zvZelUv5qQz3adKN" +} diff --git a/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json b/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json new file mode 100644 index 00000000..7e2a6014 --- /dev/null +++ b/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json @@ -0,0 +1,32 @@ +{ + "_id": "IIvsBSAqFFUFqALo", + "name": "Sattelschütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent gestattet dem Charakter, während des Reitens mit einer Schusswaffe zu schießen, die mit beiden Händen gehalten wird.

\n

Dennoch gibt es bei diesem schwierigen Manöver immer noch einen Malus von -5 im Trab und -10 im Galopp auf die Schießen-Probe (DS4 S. 92).

\n

Durch den zweiten und dritten Talentrang in Sattelschütze kann dieser Malus jedoch um jeweils 5 gemindert werden.

\n

Der Charakter benötigt mindestens einen Talentrang im Talent @Compendium[ds4.talents.bA8wUU0bKouuxkQ5]{Reiten}, um Sattelschütze erwerben zu können.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349506, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IIvsBSAqFFUFqALo" +} diff --git a/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json b/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json new file mode 100644 index 00000000..d66e0616 --- /dev/null +++ b/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json @@ -0,0 +1,90 @@ +{ + "_id": "GWVLcfQ2fm3Hc0zP", + "name": "Schütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "v4ruKzcrriNyrgvE", + "changes": [ + { + "key": "system.combatValues.rangedAttack.total", + "mode": 2, + "value": "1", + "priority": null + }, + { + "key": "system.combatValues.targetedSpellcasting.total", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schießen und Zielzauber +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!GWVLcfQ2fm3Hc0zP.v4ruKzcrriNyrgvE" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein geübter Fernkämpfer: Er erhält auf Schießen und Zielzauber einen Bonus von +1 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349503, + "modifiedTime": 1740227862726, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!GWVLcfQ2fm3Hc0zP" +} diff --git a/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json b/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json new file mode 100644 index 00000000..dfdbeb05 --- /dev/null +++ b/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json @@ -0,0 +1,84 @@ +{ + "_id": "OYneDZJStjhuDp41", + "name": "Scharfschütze", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "jJ2oSM9Bs4dDApiH", + "changes": [ + { + "key": "system.opponentDefenseForAttackType.ranged", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'ranged' || '@item.system.attackType' === 'meleeRanged')" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Fernkampfangriffen", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!OYneDZJStjhuDp41.jJ2oSM9Bs4dDApiH" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Fernkampf zielt der Charakter auf die verletzliche Körperpartien seines Ziels:

\n

Die Abwehr des Gegners wird gegen die Fernkampfangriffe des Charakters mittels Schießen um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349532, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!OYneDZJStjhuDp41" +} diff --git a/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json b/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json new file mode 100644 index 00000000..94112359 --- /dev/null +++ b/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json @@ -0,0 +1,32 @@ +{ + "_id": "jmjtmMy7DnG205xR", + "name": "Schlachtruf", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf als freie Aktion einen Schlachtruf ausstoßen, der auf ihn und drei Kameraden pro Talentrang in Hörweite wirkt:

\n

Durch den Schlachtruf ermutigt, erhalten sie für W20/2 Runden einen Bonus von +1 pro Talentrang auf alle Angriffe.

\n

Ein Charakter kann immer nur von einem Schlachtruf profitieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349612, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!jmjtmMy7DnG205xR" +} diff --git a/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json b/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json new file mode 100644 index 00000000..8dfbe444 --- /dev/null +++ b/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json @@ -0,0 +1,84 @@ +{ + "_id": "lDqu4RpV5Nr6BnPW", + "name": "Schlitzohr", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "ZFoibqksWVXEfiOB", + "changes": [ + { + "key": "system.checks.haggle", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Feilschen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!lDqu4RpV5Nr6BnPW.ZFoibqksWVXEfiOB" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Auf alle Proben sozialer Interaktion, bei denen geblufft, gefeilscht oder verhandelt wird, erhält der Charakter einen Bonus von +3 pro Talentrang.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349619, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!lDqu4RpV5Nr6BnPW" +} diff --git a/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json b/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json new file mode 100644 index 00000000..ac9ffcc0 --- /dev/null +++ b/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json @@ -0,0 +1,90 @@ +{ + "_id": "NR3BzKbROxHjpGrs", + "name": "Schlossknacker", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "8JquYZA8S06MnE0n", + "changes": [ + { + "key": "system.checks.openLock", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.workMechanism", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schloss/Mechanismus öffnen +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!NR3BzKbROxHjpGrs.8JquYZA8S06MnE0n" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhält der Charakter einen Bonus von +2 auf sämtliche Proben, um Schlösser zu öffnen.

\n

Außerdem kann pro Talentrang ein weiteres Mal versucht werden, ein und das selbe Schloss zu öffnen, ohne bereits einen Malus zu erhalten (DS4 S. 93).

\n

Schlossknacker ist mit dem @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349526, + "modifiedTime": 1740227862729, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!NR3BzKbROxHjpGrs" +} diff --git a/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json b/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json new file mode 100644 index 00000000..18f087e3 --- /dev/null +++ b/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json @@ -0,0 +1,32 @@ +{ + "_id": "YPFshcSE5pZS0dto", + "name": "Schmerzhafter Wechsel", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf zu einem beliebigen, nicht aktiven Zauber wechseln (zählt als freie Aktion), wodurch er jedoch augenblicklich W20/2 abwehrbaren Schaden erleidet.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349557, + "modifiedTime": 1740227862734, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!YPFshcSE5pZS0dto" +} diff --git a/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json b/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json new file mode 100644 index 00000000..3e73d9d8 --- /dev/null +++ b/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json @@ -0,0 +1,84 @@ +{ + "_id": "TQG9TbBb9S0nHogC", + "name": "Schnelle Reflexe", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "XEVDTsOyhPJIytd9", + "changes": [ + { + "key": "system.combatValues.initiative.total", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Initiative +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!TQG9TbBb9S0nHogC.XEVDTsOyhPJIytd9" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann schnell reagieren. Im Kampf erhält er pro Talentrang einen Bonus von +2 auf seine Initiative.

\n

Zusätzlich kann man pro Talentrang einmal im Kampf eine Waffe als freie Aktion ziehen, wechseln oder vom Boden aufheben.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349543, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!TQG9TbBb9S0nHogC" +} diff --git a/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json b/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json new file mode 100644 index 00000000..9d36c4d7 --- /dev/null +++ b/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json @@ -0,0 +1,32 @@ +{ + "_id": "yCHMzXoqCRrNU5Br", + "name": "Schnutz vor Elementen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann jederzeit die Wirkung der Außentemperatur auf ihn um bis zu 15 °C pro Talentrang variieren und damit für ihn den Aufenthalt in besonders kalten oder heißen Gebieten angenehmer zu machen.

\n

Pro Talentrang kann er diese Wirkung auf zwei willige Gefährten in VE Meter Umkreis ausdehnen.

\n

Außerdem kann er pro Talentrang einmal alle 24 Stunden – als freie Aktion – seine Abwehr gegen Elementarschaden (beispielsweise durch Blitz-, Eis- oder Feuerzauber), gegen den ein Abwehrwurf zulässig ist (also beispielsweise nicht beim Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}), pro Talentrang um 5 erhöhen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349659, + "modifiedTime": 1740227862746, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!yCHMzXoqCRrNU5Br" +} diff --git a/packs/talents/Schwimmen_RJauLusDDQWo77JU.json b/packs/talents/Schwimmen_RJauLusDDQWo77JU.json new file mode 100644 index 00000000..f3ffdb58 --- /dev/null +++ b/packs/talents/Schwimmen_RJauLusDDQWo77JU.json @@ -0,0 +1,84 @@ +{ + "_id": "RJauLusDDQWo77JU", + "name": "Schwimmen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "neVzXXAck47nnOFM", + "changes": [ + { + "key": "system.checks.swim", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Schwimmen +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!RJauLusDDQWo77JU.neVzXXAck47nnOFM" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann schwimmen (DS4 S. 93) und erhält pro Talentrang auf alle diesbezüglichen Proben +3.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349536, + "modifiedTime": 1740227862732, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!RJauLusDDQWo77JU" +} diff --git a/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json b/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json new file mode 100644 index 00000000..bac43876 --- /dev/null +++ b/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json @@ -0,0 +1,32 @@ +{ + "_id": "s37iJhz4IQVhCWbe", + "name": "Sehnenschneider", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann im Kampf einmal pro Talentrang einem Gegner die „Sehnen schneiden“. Er muss dies vor dem entsprechendem Nahkampfangriff ansagen. Für diese Aktion wird die Abwehr des Charakters halbiert, bis er in der nächsten Kampfrunde wieder an der Reihe ist.

\n

Wird beim Gegner ein Schaden erzielt, wird dieser Schaden halbiert und der Laufen- Wert des Gegners um 0,5 pro Talentrang gesenkt. Wird kein Schaden verursacht, zählt dies nicht als Talenteinsatz und ein erneuter Versuch ist möglich. Die Verletzung kann nur auf magische Weise geheilt werden (einfachste Heilmagie reicht allerdings).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349640, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!s37iJhz4IQVhCWbe" +} diff --git a/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json b/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json new file mode 100644 index 00000000..48aa9407 --- /dev/null +++ b/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json @@ -0,0 +1,32 @@ +{ + "_id": "7ZBxxxx32wacXkHS", + "name": "Sensenspötter", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Nekromant kann dem Tod ein Schnippchen schlagen:

\n

Sobald er regeltechnisch stirbt, kann er noch eine weitere Runde pro Talentrang handeln, als ober er noch am Leben wäre, vorausgesetzt, er ist nicht enthauptet, explodiert, zerstampft u. ä.

\n

Sollte der Nekromant bei Eintritt des Todes bereits bewusstlos sein, bleibt er dies weiterhin, kann allerdings in dieser Zeit verarztet und geheilt werden, als wäre er noch am Leben.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349479, + "modifiedTime": 1740227862723, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!7ZBxxxx32wacXkHS" +} diff --git a/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json b/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json new file mode 100644 index 00000000..cae74e81 --- /dev/null +++ b/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json @@ -0,0 +1,32 @@ +{ + "_id": "JldVU3O4mmDWqk8s", + "name": "Spruchmeister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Zauberwirker kann einmal alle 24 Stunden die Abklingzeit eines bestimmten Zauberspruchs ignorieren. Bei Erwerb eines Talentranges muss festgelegt werden, um welchen Zauber es sich dabei handelt. Werden mehrere Talentränge in ein und den selben Zauberspruch investiert, kann seine Abklingzeit einmal mehr pro Talentrang innerhalb der 24 Stunden ignoriert werden. Zaubersprüche, deren reguläre Abklingzeit mehr als 24 Stunden beträgt, können nicht gewählt werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349511, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!JldVU3O4mmDWqk8s" +} diff --git a/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json b/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json new file mode 100644 index 00000000..52b3f3c1 --- /dev/null +++ b/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json @@ -0,0 +1,32 @@ +{ + "_id": "soobr7uyQgDm3DoN", + "name": "Stabbindung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird rangweise an einen bestimmten Kampfstab gebunden – so kann der Charakter beispielsweise in einen Kampfstab zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Ersatzkampfstab.

\n

Der Kampfstab wird durch diesen Vorgang magisch, zerbricht also nicht einfach bei einem Schlagen-Patzer.

\n

Pro jeweiligen Talentrang erhält der Charakter +1 auf Zielzauber (zusätzlich zu dem normalen, nichtmagischen +1 Bonus des Kampfstabs), sofern er den Stab hält.

\n

Desweiteren bindet er pro investierten Talentrang einen seiner Zauber an den Stab, wodurch er den Kampfstab wie einen Zauberstab für diesen Zauber benutzen kann. Wird ein Kampfstab wider Erwarten zerstört, sind die investierten Talentränge nicht verloren und können – nach Ablauf von W20 Wochen – an einen anderen Stab gebunden werden.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349644, + "modifiedTime": 1740227862743, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!soobr7uyQgDm3DoN" +} diff --git a/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json b/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json new file mode 100644 index 00000000..37c3072e --- /dev/null +++ b/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json @@ -0,0 +1,32 @@ +{ + "_id": "5LXCr1G1Hmx622V0", + "name": "Standhaft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang sinkt die Lebenskraft-Grenze, ab der ein Charakter bewusstlos wird, um jeweils 3.

\n

Ein Charakter mit Standhaft III wird also erst mit -9 LK bewusstlos, statt schon bei Null. Alles natürlich nur unter der Voraussetzung, dass man so viele negative LK auch überleben kann (DS4 S. 42).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349463, + "modifiedTime": 1740227862720, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5LXCr1G1Hmx622V0" +} diff --git a/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json b/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json new file mode 100644 index 00000000..0f35e0ba --- /dev/null +++ b/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json @@ -0,0 +1,32 @@ +{ + "_id": "5nve4XNc1bJdfZNN", + "name": "Teufelchen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Beschwörer erhält pro Talentrang ein kleines, fliegendes Teufelchen als Begleiter, das ihn im Kampf unterstützt. Teufelchen können nur Knurrlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Beschwörers.

\n

Sobald der Charakter es befiehlt oder das Teufelchen über weniger als 1 LK verfügt, kehrt es zurück auf seine Existenzebene, von wo es erst nach frühestens W20 Stunden wiederkehren kann, sofern der Charakter dies wünscht.

\n

Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf ein Teufelchen anzuwenden.

\n

Es gibt drei Arten von Teufelchen (@Compendium[ds4.creatures.aqbcBjeCJUHJ5uVj]{Teufelchen I}, @Compendium[ds4.creatures.SxbO1iTrXYGbdMoC]{Teufelchen II}, @Compendium[ds4.creatures.22pkyKnZoRLG0nnY]{Teufelchen III}), auf die man durch weitere Talentränge Zugang erhält. Bei Erwerb eines Talentranges wird festgelegt, um was für ein Teufelchen es sich dabei handelt. Es ist auch immer möglich, ein rangniedrigeres Teufelchen erneut auszuwählen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349466, + "modifiedTime": 1740227862721, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!5nve4XNc1bJdfZNN" +} diff --git a/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json b/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json new file mode 100644 index 00000000..fc81ef13 --- /dev/null +++ b/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json @@ -0,0 +1,32 @@ +{ + "_id": "iP5aZcqriVLjdVcd", + "name": "Tiergestalt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in ein Tier der Größenkategorie „normal“ (DS4 S. 104) oder kleiner verwandeln, wie beispielsweise eine Maus, eine Katze oder ein Wolf, aber keine magischen, giftigen oder flugfähigen Tiere.

\n

Die Verwandlung dauert eine Runde und kann jederzeit rückgängig gemacht werden, erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich in Tiergestalt nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an, nicht jedoch Spezialangriffe wie beispielsweise den Giftbiss einer Schlange.

\n

In Tiergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Tieres einzusetzen.

\n

Zauber, die beispielsweise Tiere kontrollieren, haben auf den verwandelten Druiden keinen Einfluss.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349608, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!iP5aZcqriVLjdVcd" +} diff --git a/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json b/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json new file mode 100644 index 00000000..781bb6ca --- /dev/null +++ b/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json @@ -0,0 +1,84 @@ +{ + "_id": "IfyKb7y4YoUTssTs", + "name": "Tiermeister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "oelEFuhY9y6DsxXO", + "changes": [ + { + "key": "system.checks.ride", + "mode": 2, + "value": "3", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Reiten +3", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!IfyKb7y4YoUTssTs.oelEFuhY9y6DsxXO" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat ein Gespür für Tiere und erhält auf alle Proben im Umgang mit ihnen +3 (dieser Bonus zählt auch auf Reiten-Proben, um die Reitgeschwindigkeit oder die Richtung zu ändern).

\n

Einmal alle 24 Stunden pro Talentrang kann er außerdem eine beliebige Anzahl wilder, aggressiver oder selbst ausgehungerter Tiere dazu bringen, ihn und zwei Begleiter pro Talentrang zu verschonen (es sei denn, sie greifen ihrerseits die Tiere an).

\n

Dies ist auch bei tollwütigen oder kontrollierten Tieren möglich, sofern hier dem Charakter eine Probe gegen GEI+AU+Talentrang gelingt (zählt als ganze Aktion, ein Versuch pro Talentrang).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349508, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IfyKb7y4YoUTssTs" +} diff --git a/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json b/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json new file mode 100644 index 00000000..196fe661 --- /dev/null +++ b/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json @@ -0,0 +1,32 @@ +{ + "_id": "9hpucJC8WArBiXUR", + "name": "Tod entrinnen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Sobald der Charakter weniger als 1 LK besitzt, aber immer noch lebt, heilt er automatisch nach 5 Runden (-1 Runde pro Talentrang) 1 LK pro Talentrang pro Runde.

\n

Sobald seine LK wieder im positiven Bereich sind, endet der Heileffekt und der Charakter ist augenblicklich voll einsatzfähig.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349487, + "modifiedTime": 1740227862724, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!9hpucJC8WArBiXUR" +} diff --git a/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json b/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json new file mode 100644 index 00000000..6c6905b2 --- /dev/null +++ b/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json @@ -0,0 +1,32 @@ +{ + "_id": "Q98LHOFZmKVoafp8", + "name": "Todeskraft", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Immer wenn in Reichweite von 2+Talentrang in Metern ein Lebewesen, von mindestens „kleiner“ Größenkategorie (DS4 S. 104), zu Tode kommt, regeneriert der Nekromant 2 LK pro Talentrang in Todeskraft.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349534, + "modifiedTime": 1740227862731, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!Q98LHOFZmKVoafp8" +} diff --git a/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json b/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json new file mode 100644 index 00000000..5db467c8 --- /dev/null +++ b/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json @@ -0,0 +1,32 @@ +{ + "_id": "rbHZFVutiQ25glBq", + "name": "Totenrufer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Nekromant einmal alle 24 Stunden die Abklingzeit eines Zaubers zum Erwecken von Untoten ignorieren.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349639, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rbHZFVutiQ25glBq" +} diff --git a/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json b/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json new file mode 100644 index 00000000..790af2b5 --- /dev/null +++ b/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json @@ -0,0 +1,32 @@ +{ + "_id": "fIrcapAlXMqto18X", + "name": "Unersättliches Beschwören", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Dämonologe einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Dämonen beschwören ignorieren.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349586, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!fIrcapAlXMqto18X" +} diff --git a/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json b/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json new file mode 100644 index 00000000..e75f912c --- /dev/null +++ b/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json @@ -0,0 +1,32 @@ +{ + "_id": "FoY7VbBTatyHOrb8", + "name": "Untote Horden", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang erhöht sich die Anzahl der erweckbaren und kontrollierbaren Untoten (entspricht der Stufe des Charakters) um 3.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349498, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!FoY7VbBTatyHOrb8" +} diff --git a/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json b/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json new file mode 100644 index 00000000..a5937dea --- /dev/null +++ b/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json @@ -0,0 +1,32 @@ +{ + "_id": "ml6GkLIsqDII9Mcp", + "name": "Untote zerschmettern", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Untoten führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349624, + "modifiedTime": 1740227862740, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!ml6GkLIsqDII9Mcp" +} diff --git a/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json b/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json new file mode 100644 index 00000000..6f52e489 --- /dev/null +++ b/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json @@ -0,0 +1,32 @@ +{ + "_id": "inRlUNgoiaHm4pf6", + "name": "Verdrücken", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter kann sich bei den Aktionen Aufstehen und Rennen zusätzlich um einen Meter pro Talentrang bewegen.

\n

Zusätzlich kann er, gefesselt oder in Ketten gelegt, zweimal pro Talentrang versuchen, sich mit AGI+BE aus einer Fessel oder Schelle zu winden (man benötigt beispielsweise 2 erfolgreiche Proben, um beide Hände aus Handschellen zu befreien).

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349610, + "modifiedTime": 1740227862738, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!inRlUNgoiaHm4pf6" +} diff --git a/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json b/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json new file mode 100644 index 00000000..00baf5d0 --- /dev/null +++ b/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json @@ -0,0 +1,32 @@ +{ + "_id": "AT9Bi7Tsr8k3HujP", + "name": "Vergeltung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Kampf kann der Charakter einmal pro Talentrang seinen Wert in Schlagen für eine Runde um seinen vierfachen Talentrang in @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} bzw. @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erhöhen.

\n

Es ist nicht mögliche, mehrere Talentränge von Vergeltung in einer einzelnen Probe zu vereinen.

\n

Eine Kombination mit Talenten wie beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} ist allerdings uneingeschränkt möglich.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349492, + "modifiedTime": 1740227862725, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!AT9Bi7Tsr8k3HujP" +} diff --git a/packs/talents/Verheerer_6oXmRM21CLfELqKv.json b/packs/talents/Verheerer_6oXmRM21CLfELqKv.json new file mode 100644 index 00000000..a1b05c4e --- /dev/null +++ b/packs/talents/Verheerer_6oXmRM21CLfELqKv.json @@ -0,0 +1,84 @@ +{ + "_id": "6oXmRM21CLfELqKv", + "name": "Verheerer", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "aqgIfpGWXYeXn1y6", + "changes": [ + { + "key": "system.opponentDefense", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'spell' && @item.system.allowsDefense" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Zaubern/Zielzaubern -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!6oXmRM21CLfELqKv.aqgIfpGWXYeXn1y6" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter versteht es, seine Magie verheerend einzusetzen:

\n

Die Abwehr des Gegners wird gegen Schaden durch die Zauberangriffe des Charakters (mittels Zaubern oder Zielzaubern) um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349474, + "modifiedTime": 1740227862722, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!6oXmRM21CLfELqKv" +} diff --git a/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json b/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json new file mode 100644 index 00000000..f3b1b9a8 --- /dev/null +++ b/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json @@ -0,0 +1,84 @@ +{ + "_id": "dtynnRNkxg59Nqz4", + "name": "Verletzen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "x1FVRsSyjHwOfYRs", + "changes": [ + { + "key": "system.opponentDefenseForAttackType.melee", + "mode": 2, + "value": "-1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": true, + "itemName": "", + "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'melee' || '@item.system.attackType' === 'meleeRanged')" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Gegnerabwehr bei Nahkampfangriffen -1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!dtynnRNkxg59Nqz4.x1FVRsSyjHwOfYRs" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Im Nahkampf zielt der Charakter auf die verletzlichen Körperpartien seines Gegenübers:

\n

Die Abwehr des Gegners wird gegen die Nahkampfangriffe des Charakters mittels Schlagen um 1 pro Talentrang gesenkt.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349581, + "modifiedTime": 1740227862736, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!dtynnRNkxg59Nqz4" +} diff --git a/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json b/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json new file mode 100644 index 00000000..ff0cf6be --- /dev/null +++ b/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json @@ -0,0 +1,84 @@ +{ + "_id": "tmFeIA1PSVHqGGjx", + "name": "Vernichtender Schlag", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "rK7expqsrPV5t8f1", + "changes": [ + { + "key": "system.checks.featOfStrength", + "mode": 2, + "value": "1", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Kraftakt +1", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!tmFeIA1PSVHqGGjx.rK7expqsrPV5t8f1" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Krieger einmal alle 24 Stunden mit einem Nahkampfangriff einen vernichtenden Schlag ausführen, gegen den keine Abwehr gewürfelt wird.

\n

Der vernichtende Schlag muss vor dem Würfeln der Schlagen-Probe angekündigt werden und kann pro Talentrang mit maximal einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb}) kombiniert werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349652, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tmFeIA1PSVHqGGjx" +} diff --git a/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json b/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json new file mode 100644 index 00000000..cb3e0f49 --- /dev/null +++ b/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json @@ -0,0 +1,32 @@ +{ + "_id": "tkLyvmSYvVslMXVE", + "name": "Vertrautenband", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Schafft ein besonderes Band zwischen dem Charakter und einem einzelnen seiner Vertrauten, wodurch beide sich telepathisch miteinander verständigen (einfache Kommunikation wie „Gefahr?“, „Flieh!“ oder „Hilf mir!“) können.

\n

Zusätzlich wird pro Talentrang ein Bonus von +3 auf die Eigenschaften des Vertrauten verteilt.

\n

Jedesmal, wenn der Charakter um eine Stufe aufsteigt, erhält dieses Tier außerdem +1 auf eine beliebige Eigenschaft. Wird das Tier getötet, erlischt das Band, wird jedoch bei Wiederbelebung des Tieres erneuert. Ist dies nicht der Fall, sind die Talentränge nicht verloren und können für ein neues Vertrautenband mit einem anderen Vertrauten eingesetzt werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349650, + "modifiedTime": 1740227862744, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!tkLyvmSYvVslMXVE" +} diff --git a/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json b/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json new file mode 100644 index 00000000..68c8dcf0 --- /dev/null +++ b/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json @@ -0,0 +1,32 @@ +{ + "_id": "KwGcyAzyqbz7oiTl", + "name": "Vertrauter", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang schließt sich Spähern ein Tier (Falke, Hund, Pferd, Wolf usw.), Zauberwirkern ein Kleintier (Katze, Kröte, Rabe usw.) und Paladinen ein Schlachtross an. Ein Druide kann jede Art von Tier bis Größenkategorie “groß” (DS4 S. 104) wählen.

\n

Die treuen Tiere befolgen einfache, einsilbige Befehle wie „Platz!“ und „Fass!“ und haben Verstand +1, auch wenn mit ihnen keine intelligente Kommunikation möglich ist und sie auch nicht zum heimlichen Auskundschaften etc. abgerichtet werden können. Ein Vertrauter gewährt seinem Besitzer, sofern er nicht mehr als AU x 5 (des Charakters) in Metern von ihm entfernt ist, einen Bonus von +1 auf einen von zwei Kampfwerten:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KlasseVertrautenbonus
SpäherInitiative oder Schießen
ZauberwirkerZaubern oder Zielzaubern
PaladinAbwehr oder Schlagen
\n

Der zu erhöhende Kampfwert wird bei Erhalt des Vertrauten ausgewählt.

\n

Wird ein Vertrauter getötet, erleidet der Charakter im selben Moment W20/2 nicht abwehrbaren Schaden und der Bonus auf den Kampfwert erlischt. Wird der Vertraute nicht wiederbelebt, kann für seinen Talentrang ein neuer Vertrauter gewählt werden, allerdings erst nach frühestens W20 Wochen. Bis dahin hat der Charakter temporär KÖR-1.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349514, + "modifiedTime": 1740227862728, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!KwGcyAzyqbz7oiTl" +} diff --git a/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json b/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json new file mode 100644 index 00000000..8dce687b --- /dev/null +++ b/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json @@ -0,0 +1,32 @@ +{ + "_id": "v9ocoi91dKJahAe3", + "name": "Waffenkenner", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter besondere Kenntnisse im Umgang mit einer bestimmten Art von Nahkampfwaffe erlangen (beispielsweise Dolche, Langschwerter oder Streitäxte).

\n

Er erhält im Kampf mit dieser Waffenart Schlagen +1 und die Abwehr des Gegners wird um 1 gesenkt. Es ist nicht möglich, Waffenkenner mehrmals für ein und dieselbe Waffenart zu erlangen, jedoch kann der Talentrang mit Hilfe des Talents @Compendium[ds4.talents.iI1SP1214SpIzBCW]{Perfektion} weiter ausgebaut werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349654, + "modifiedTime": 1740227862745, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!v9ocoi91dKJahAe3" +} diff --git a/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json b/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json new file mode 100644 index 00000000..105c2318 --- /dev/null +++ b/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json @@ -0,0 +1,32 @@ +{ + "_id": "1VAiKGCnqKfNC8AE", + "name": "Waffenloser Meister", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Kampfmönch ist ein Meister des waffenlosen Kampfes, der WB seiner unbewaffneten Angriffe beträgt +1 pro Talentrang.

\n

Der normalerweise gültige Bonus von +5 auf Abwehr gegen waffenlose Angriffe entfällt bei seinen Gegnern, deren Abwehr außerdem noch pro Talentrang um 1 gesenkt wird. Außerdem erhält ein waffenloser Meister +1 auf Abwehr und Initiative pro Talentrang, sofern er keinen Schild und keine Art von Rüstungen bis auf Stoff trägt.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349448, + "modifiedTime": 1740227862719, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!1VAiKGCnqKfNC8AE" +} diff --git a/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json b/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json new file mode 100644 index 00000000..11b17c5a --- /dev/null +++ b/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json @@ -0,0 +1,108 @@ +{ + "_id": "aojENPok9Guo3JN1", + "name": "Wahrnehmung", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "qxrTP7Cs4mFS7lLU", + "changes": [ + { + "key": "system.checks.perception", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.wakeUp", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.decipherScript", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.readTracks", + "mode": 2, + "value": "2", + "priority": null + }, + { + "key": "system.checks.search", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Wahrnehmungsproben +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!aojENPok9Guo3JN1.qxrTP7Cs4mFS7lLU" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter ist ein aufmerksamer Beobachter. Auf alle Bemerken-Proben erhält er +2 pro Talentrang.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349562, + "modifiedTime": 1740227862735, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!aojENPok9Guo3JN1" +} diff --git a/packs/talents/Wechsler_gwCc6niwZL45wklE.json b/packs/talents/Wechsler_gwCc6niwZL45wklE.json new file mode 100644 index 00000000..1903d92b --- /dev/null +++ b/packs/talents/Wechsler_gwCc6niwZL45wklE.json @@ -0,0 +1,84 @@ +{ + "_id": "gwCc6niwZL45wklE", + "name": "Wechsler", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [ + { + "_id": "nxzOItIzbsdQSbby", + "changes": [ + { + "key": "system.checks.changeSpell", + "mode": 2, + "value": "2", + "priority": null + } + ], + "disabled": false, + "duration": { + "startTime": null, + "seconds": null, + "combat": null, + "rounds": null, + "turns": null, + "startRound": null, + "startTurn": null + }, + "transfer": true, + "flags": { + "ds4": { + "itemEffectConfig": { + "applyToItems": false, + "itemName": "", + "condition": "" + } + } + }, + "tint": "#ffffff", + "origin": null, + "name": "Zauber wechseln +2", + "description": "", + "statuses": [], + "_stats": { + "coreVersion": "12.331", + "systemId": null, + "systemVersion": null, + "createdTime": null, + "modifiedTime": null, + "lastModifiedBy": null, + "compendiumSource": null, + "duplicateSource": null + }, + "img": "icons/svg/aura.svg", + "type": "base", + "system": {}, + "sort": 0, + "_key": "!items.effects!gwCc6niwZL45wklE.nxzOItIzbsdQSbby" + } + ], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Charakter hat gelernt, sich auf das Auswechseln seines aktiven Zaubers zu konzentrieren: Er erhält auf Proben, um seine Zauber zu wechseln, pro Talentrang einen Bonus von +2.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349596, + "modifiedTime": 1740227862737, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!gwCc6niwZL45wklE" +} diff --git a/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json b/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json new file mode 100644 index 00000000..fcd834ef --- /dev/null +++ b/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json @@ -0,0 +1,32 @@ +{ + "_id": "IB1OJ65TseuSw9ZI", + "name": "Wissensegebiet", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird für jedes Wissensgebiet (Alte Sagen, Mathematik, Naturkunde, Sternenkunde, Zwergische Religion usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Wissensgebiet und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Wissensgebiet erworben hat.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349505, + "modifiedTime": 1740227862727, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!IB1OJ65TseuSw9ZI" +} diff --git a/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json b/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json new file mode 100644 index 00000000..0d85ea53 --- /dev/null +++ b/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json @@ -0,0 +1,32 @@ +{ + "_id": "kZti1KQIbf4UPvI7", + "name": "Zauber auslösen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Meisterdieb kann, wie ein Zauberwirker, Zaubersprüche von Schriftrollen oder aus Zauberbüchern ablesen und dadurch auslösen, wodurch die Schrift des Zaubers verblasst und er verschwindet.

\n

Pro Talentrang wird eine der drei Zauberklassen Heiler, Zauberer oder Schwarzmagier gewählt und fortan kann der Charakter alle Zauber, die dieser Klasse zugänglich sind, unabhängig von seiner Stufe ablesen und auslösen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349613, + "modifiedTime": 1740227862739, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!kZti1KQIbf4UPvI7" +} diff --git a/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json b/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json new file mode 100644 index 00000000..2e93c1cb --- /dev/null +++ b/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json @@ -0,0 +1,32 @@ +{ + "_id": "XiwLao8lZi3JL0ku", + "name": "Zaubermacht", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Zaubern oder Zielzaubern eine Runde lang um den Wert von Geist erhöhen, sofern es sich dabei um einen Zauber handelt, der andere schädigt oder heilt. Es ist möglich, mehrere Talentränge in einem einzigen Zauber zu vereinen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349554, + "modifiedTime": 1740227862733, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!XiwLao8lZi3JL0ku" +} diff --git a/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json b/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json new file mode 100644 index 00000000..f7693395 --- /dev/null +++ b/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json @@ -0,0 +1,32 @@ +{ + "_id": "rCRPchtSJye0K5nt", + "name": "Zauberwaffe", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Dieses Talent wird pro Talentrang an eine bestimmte Nahkampfwaffe gebunden – so kann der Charakter beispielsweise in sein Lieblingsschwert zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Bihänder. Pro Talentrang erhält der Charakter +1 auf Zielzaubern, sofern er die jeweilige Waffe in den Händen hält.

\n

Desweiteren kann er pro gebundenen Talentrang einen seiner Zauber an die Waffe binden, um sie wie einen Zauberstab für diesen Zauber zu nutzen. Wird eine Zauberwaffe zerstört, sind die investierten Talentränge nicht verloren und können (nach Ablauf von W20 Wochen) an eine andere Waffe gebunden werden.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349637, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rCRPchtSJye0K5nt" +} diff --git a/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json b/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json new file mode 100644 index 00000000..8403acbc --- /dev/null +++ b/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json @@ -0,0 +1,32 @@ +{ + "_id": "qnYeR3a3LNUJ329t", + "name": "Zehrender Spurt", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Der Blutmagier kann für das Opfern von 1 LK (zählt als freie Aktion) seinen Wert in Laufen für W20/2 Runden um 2 m erhöhen. Pro weiterem Talentrang kann ein zusätzlicher LK geopfert werden, um Laufen um weitere 2 m zu erhöhen.

", + "rank": { + "base": 0, + "max": 3, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349636, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!qnYeR3a3LNUJ329t" +} diff --git a/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json b/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json new file mode 100644 index 00000000..f65ab081 --- /dev/null +++ b/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json @@ -0,0 +1,32 @@ +{ + "_id": "rXXw5aS0pCr5amWa", + "name": "Zwei Waffen", + "type": "talent", + "img": "icons/svg/item-bag.svg", + "effects": [], + "folder": null, + "sort": 0, + "flags": {}, + "system": { + "description": "

Pro Talentrang wird der Malus von -10 auf Schlagen und Abwehr beim Kampf mit zwei Waffen um jeweils 2 Punkte gemindert.

", + "rank": { + "base": 0, + "max": 5, + "mod": 0 + } + }, + "ownership": { + "default": 0 + }, + "_stats": { + "systemId": "ds4", + "systemVersion": "1.21.1", + "coreVersion": "12.331", + "createdTime": 1668995349638, + "modifiedTime": 1740227862742, + "lastModifiedBy": "uxmyzF1AAOHwjAmE", + "compendiumSource": null, + "duplicateSource": null + }, + "_key": "!items!rXXw5aS0pCr5amWa" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..86fb9412 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5332 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@commitlint/cli': + specifier: 19.7.1 + version: 19.7.1(@types/node@18.19.76)(typescript@5.7.3) + '@commitlint/config-conventional': + specifier: 19.7.1 + version: 19.7.1 + '@eslint/js': + specifier: 9.21.0 + version: 9.21.0 + '@foundryvtt/foundryvtt-cli': + specifier: 1.0.4 + version: 1.0.4 + '@guanghechen/rollup-plugin-copy': + specifier: 6.0.4 + version: 6.0.4(rollup@4.34.8) + '@swc/core': + specifier: 1.10.18 + version: 1.10.18 + '@types/fs-extra': + specifier: 11.0.4 + version: 11.0.4 + '@types/jquery': + specifier: 3.5.32 + version: 3.5.32 + '@types/node': + specifier: 18.19.76 + version: 18.19.76 + conventional-changelog-cli: + specifier: 5.0.0 + version: 5.0.0(conventional-commits-filter@5.0.0) + conventional-changelog-conventionalcommits: + specifier: 8.0.0 + version: 8.0.0 + eslint: + specifier: 9.21.0 + version: 9.21.0(jiti@2.4.2) + eslint-config-prettier: + specifier: 10.0.1 + version: 10.0.1(eslint@9.21.0(jiti@2.4.2)) + fs-extra: + specifier: 11.3.0 + version: 11.3.0 + globals: + specifier: 16.0.0 + version: 16.0.0 + handlebars: + specifier: 4.7.8 + version: 4.7.8 + npm-run-all: + specifier: 4.1.5 + version: 4.1.5 + prettier: + specifier: 3.5.2 + version: 3.5.2 + rimraf: + specifier: 6.0.1 + version: 6.0.1 + rollup: + specifier: 4.34.8 + version: 4.34.8 + rollup-plugin-styler: + specifier: 2.0.0 + version: 2.0.0(rollup@4.34.8)(typescript@5.7.3) + rollup-plugin-swc3: + specifier: 0.12.1 + version: 0.12.1(@swc/core@1.10.18)(rollup@4.34.8) + sass: + specifier: 1.85.0 + version: 1.85.0 + semver: + specifier: 7.7.1 + version: 7.7.1 + tslib: + specifier: 2.8.1 + version: 2.8.1 + typescript: + specifier: 5.7.3 + version: 5.7.3 + typescript-eslint: + specifier: 8.24.1 + version: 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + vite: + specifier: 6.1.1 + version: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + vitest: + specifier: 3.0.6 + version: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + yargs: + specifier: 17.7.2 + version: 17.7.2 + +packages: + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@commitlint/cli@19.7.1': + resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.7.1': + resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.5.0': + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} + engines: {node: '>=v18'} + + '@commitlint/format@19.5.0': + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.7.1': + resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.7.1': + resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} + engines: {node: '>=v18'} + + '@commitlint/load@19.6.1': + resolution: {integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==} + engines: {node: '>=v18'} + + '@commitlint/message@19.5.0': + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.5.0': + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.5.0': + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.6.0': + resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.5.0': + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.5.0': + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} + engines: {node: '>=v18'} + + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} + engines: {node: '>=v18'} + + '@conventional-changelog/git-client@1.0.1': + resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.0.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.0': + resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.21.0': + resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/deepmerge@2.0.0': + resolution: {integrity: sha512-fsaybTGDyQ5KpPsplQqb9yKdCf2x/pbNpMNk8Tvp3rRz7lVcupKysH4b2ELMN2P4Hak1+UqTYdTj/u4FNV2p0g==} + + '@foundryvtt/foundryvtt-cli@1.0.4': + resolution: {integrity: sha512-iEdNP3JbGwGQ0ZgawLFNCXvcSmSl2Xv/NjY2Fj35i+m0JYi1er9qfJl/hhECIEsrXG27tboEqbFXqFLMgXM4kg==} + engines: {node: '>17.0.0'} + hasBin: true + + '@guanghechen/chalk.types@1.0.3': + resolution: {integrity: sha512-Li14uVSkz4ZopzkANVZIZRCXHZdsfqZJ1loQli6Evme333Fp2e7Eo+ZTelgDVvyvfHMBh9pJixak4y+taBOnmg==} + + '@guanghechen/chalk@1.0.3': + resolution: {integrity: sha512-hTqwg1TioJdx8RfZI8e/V50oy3VaLWzwRUVJPZlNxbDlHVrPoAwH5b60P/Gr1rwMjfQESeVBiykepR7JkHeexg==} + + '@guanghechen/globby@1.0.2': + resolution: {integrity: sha512-lNj4TEIDxhkATP1COH8cyZfnfDteZ5Mk2jPg46mc3AblD0OQ5ihePOLYryOufENjaH7r2kLaGazeBAXyRJJGbQ==} + engines: {node: '>= 18.0.0'} + + '@guanghechen/rollup-plugin-copy@6.0.4': + resolution: {integrity: sha512-ytnHdaUAs3en3id8CZ/g1NEvtmlXUGEU1py3N8bR/vFKlZEFTcvh5VpuFUGalqJP+FWKy/g6xyPT4OBnLHHw1A==} + engines: {node: '>= 18.0.0'} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + '@guanghechen/std@1.0.4': + resolution: {integrity: sha512-jjFX1ud5AULLaF6koHuiIHZQMgGkwKi22D6LzkIea05zZ/I7MmR+HRzQ4+XkfcY2YvHbt9zMGyhBqJrQaiPi+w==} + engines: {node: '>= 18.0.0'} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@hutson/parse-repository-url@5.0.0': + resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} + engines: {node: '>=10.13.0'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.34.8': + resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.8': + resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.8': + resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.8': + resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.34.8': + resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.8': + resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.8': + resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.8': + resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.8': + resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.8': + resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + cpu: [x64] + os: [win32] + + '@seald-io/binary-search-tree@1.0.3': + resolution: {integrity: sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==} + + '@seald-io/nedb@4.0.4': + resolution: {integrity: sha512-CUNcMio7QUHTA+sIJ/DC5JzVNNsHe743TPmC4H5Gij9zDLMbmrCT2li3eVB72/gF63BPS8pWEZrjlAMRKA8FDw==} + + '@swc/core-darwin-arm64@1.10.18': + resolution: {integrity: sha512-FdGqzAIKVQJu8ROlnHElP59XAUsUzCFSNsou+tY/9ba+lhu8R9v0OI5wXiPErrKGZpQFMmx/BPqqhx3X4SuGNg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.10.18': + resolution: {integrity: sha512-RZ73gZRituL/ZVLgrW6BYnQ5g8tuStG4cLUiPGJsUZpUm0ullSH6lHFvZTCBNFTfpQChG6eEhi2IdG6DwFp1lw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.10.18': + resolution: {integrity: sha512-8iJqI3EkxJuuq21UHoen1VS+QlS23RvynRuk95K+Q2HBjygetztCGGEc+Xelx9a0uPkDaaAtFvds4JMDqb9SAA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.10.18': + resolution: {integrity: sha512-8f1kSktWzMB6PG+r8lOlCfXz5E8Qhsmfwonn77T/OfjvGwQaWrcoASh2cdjpk3dydbf8jsKGPQE1lSc7GyjXRQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.10.18': + resolution: {integrity: sha512-4rv+E4VLdgQw6zjbTAauCAEExxChvxMpBUMCiZweTNPKbJJ2dY6BX2WGJ1ea8+RcgqR/Xysj3AFbOz1LBz6dGA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.10.18': + resolution: {integrity: sha512-vTNmyRBVP+sZca+vtwygYPGTNudTU6Gl6XhaZZ7cEUTBr8xvSTgEmYXoK/2uzyXpaTUI4Bmtp1x81cGN0mMoLQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.10.18': + resolution: {integrity: sha512-1TZPReKhFCeX776XaT6wegknfg+g3zODve+r4oslFHI+g7cInfWlxoGNDS3niPKyuafgCdOjme2g3OF+zzxfsQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.10.18': + resolution: {integrity: sha512-o/2CsaWSN3bkzVQ6DA+BiFKSVEYvhWGA1h+wnL2zWmIDs2Knag54sOEXZkCaf8YQyZesGeXJtPEy9hh/vjJgkA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.10.18': + resolution: {integrity: sha512-eTPASeJtk4mJDfWiYEiOC6OYUi/N7meHbNHcU8e+aKABonhXrIo/FmnTE8vsUtC6+jakT1TQBdiQ8fzJ1kJVwA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.10.18': + resolution: {integrity: sha512-1Dud8CDBnc34wkBOboFBQud9YlV1bcIQtKSg7zC8LtwR3h+XAaCayZPkpGmmAlCv1DLQPvkF+s0JcaVC9mfffQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.10.18': + resolution: {integrity: sha512-IUWKD6uQYGRy8w2X9EZrtYg1O3SCijlHbCXzMaHQYc1X7yjijQh4H3IVL9ssZZyVp2ZDfQZu4bD5DWxxvpyjvg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + + '@types/jquery@3.5.32': + resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonfile@6.1.1': + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + + '@types/node@18.19.76': + resolution: {integrity: sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/sizzle@2.3.3': + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + + '@typescript-eslint/eslint-plugin@8.24.1': + resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.24.1': + resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/scope-manager@8.24.1': + resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.24.1': + resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/types@8.24.1': + resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.24.1': + resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.24.1': + resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.24.1': + resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/expect@3.0.6': + resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==} + + '@vitest/mocker@3.0.6': + resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.6': + resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==} + + '@vitest/runner@3.0.6': + resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==} + + '@vitest/snapshot@3.0.6': + resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==} + + '@vitest/spy@3.0.6': + resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==} + + '@vitest/utils@3.0.6': + resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abstract-level@1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + add-stream@1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001469: + resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==} + + caniuse-lite@1.0.30001699: + resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + + catering@2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + classic-level@1.4.1: + resolution: {integrity: sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==} + engines: {node: '>=12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-angular@8.0.0: + resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} + engines: {node: '>=18'} + + conventional-changelog-atom@5.0.0: + resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==} + engines: {node: '>=18'} + + conventional-changelog-cli@5.0.0: + resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==} + engines: {node: '>=18'} + hasBin: true + + conventional-changelog-codemirror@5.0.0: + resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} + + conventional-changelog-core@8.0.0: + resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==} + engines: {node: '>=18'} + + conventional-changelog-ember@5.0.0: + resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==} + engines: {node: '>=18'} + + conventional-changelog-eslint@6.0.0: + resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==} + engines: {node: '>=18'} + + conventional-changelog-express@5.0.0: + resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==} + engines: {node: '>=18'} + + conventional-changelog-jquery@6.0.0: + resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==} + engines: {node: '>=18'} + + conventional-changelog-jshint@5.0.0: + resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==} + engines: {node: '>=18'} + + conventional-changelog-preset-loader@5.0.0: + resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} + engines: {node: '>=18'} + + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} + hasBin: true + + conventional-changelog@6.0.0: + resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==} + engines: {node: '>=18'} + + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + conventional-commits-parser@6.0.0: + resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + engines: {node: '>=18'} + hasBin: true + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@7.0.6: + resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano-utils@5.0.0: + resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + cssnano@7.0.6: + resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.101: + resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.0.1: + resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.21.0: + resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + git-raw-commits@5.0.0: + resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==} + engines: {node: '>=18'} + hasBin: true + + git-semver-tags@8.0.0: + resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==} + engines: {node: '>=18'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.0.0: + resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + engines: {node: '>=18'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@7.0.0: + resolution: {integrity: sha512-ICclEpTLhHj+zCuSb2/usoNXSVkxUSIopre+b1w8NDY9Dntp9LO4vLdHYI336TH8sAqwrRgnSfdkBG2/YpisHA==} + engines: {node: ^16.14.0 || >=18.0.0} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + level-supports@4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + + level-transcoder@1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + + lru-cache@11.0.0: + resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} + engines: {node: 20 || >=22} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@12.1.0: + resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + module-error@1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-macros@2.2.2: + resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + nedb-promises@6.2.3: + resolution: {integrity: sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-gyp-build@4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-queue@8.1.0: + resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} + engines: {node: '>=18'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-colormin@7.0.2: + resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-convert-values@7.0.4: + resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-comments@7.0.3: + resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-duplicates@7.0.1: + resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-empty@7.0.0: + resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-discard-overridden@7.0.0: + resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-longhand@7.0.4: + resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-merge-rules@7.0.4: + resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-font-values@7.0.0: + resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-gradients@7.0.0: + resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-params@7.0.2: + resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-minify-selectors@7.0.4: + resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-modules-extract-imports@3.0.0: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.0.0: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-normalize-charset@7.0.0: + resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-display-values@7.0.0: + resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-positions@7.0.0: + resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-repeat-style@7.0.0: + resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-string@7.0.0: + resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-timing-functions@7.0.0: + resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-unicode@7.0.2: + resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-url@7.0.0: + resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-normalize-whitespace@7.0.0: + resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-ordered-values@7.0.1: + resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-initial@7.0.2: + resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-reduce-transforms@7.0.0: + resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@7.0.1: + resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.31 + + postcss-unique-selectors@7.0.3: + resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.2: + resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.5.2: + resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} + engines: {node: '>=14'} + hasBin: true + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + query-string@9.1.1: + resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} + engines: {node: '>=18'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + + readdirp@4.0.1: + resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + engines: {node: '>= 14.16.0'} + + regexp.prototype.flags@1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + rollup-plugin-styler@2.0.0: + resolution: {integrity: sha512-u96KK3hfA5RDeZFuE1kW0mu7FKS6sDu0RlGx9vijqQbzlmrzkhkBtge5gXZ6wF0CnTgcn7CfkwKOwIcWVZU/VQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + rollup: ^2.63.0 || ^3.0.0 || ^4.0.0 + + rollup-plugin-swc3@0.12.1: + resolution: {integrity: sha512-iNV1T432XvyejZ19/41C2gLbXxEOiiJynPPAFF0WzwwFT5FHx7SstAp0yjJRLyrbZjfIhoWJVl3hX3c3Stv/GQ==} + engines: {node: '>=16'} + peerDependencies: + '@swc/core': '>=1.2.165' + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup-preserve-directives@1.1.2: + resolution: {integrity: sha512-OOaYh4zO0Dcd/eVWGB8H69CgTiohl+jJqc2TLtjLENVIQaV2rxO3OW6RILzCQOdDvPT+/rzwRp+97OXhem895Q==} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup@4.34.8: + resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + sass@1.85.0: + resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==} + engines: {node: '>=14.0.0'} + hasBin: true + + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.padend@3.1.4: + resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + + string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylehacks@7.0.4: + resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.31 + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempfile@5.0.0: + resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} + engines: {node: '>=14.18'} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@4.20.0: + resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==} + engines: {node: '>=16'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typescript-eslint@8.24.1: + resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vite-node@3.0.6: + resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.1.1: + resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.0.6: + resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.6 + '@vitest/ui': 3.0.6 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@commitlint/cli@19.7.1(@types/node@18.19.76)(typescript@5.7.3)': + dependencies: + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.7.1 + '@commitlint/load': 19.6.1(@types/node@18.19.76)(typescript@5.7.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.7.1': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + ajv: 8.12.0 + + '@commitlint/ensure@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.5.0': {} + + '@commitlint/format@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.7.1': + dependencies: + '@commitlint/types': 19.5.0 + semver: 7.7.1 + + '@commitlint/lint@19.7.1': + dependencies: + '@commitlint/is-ignored': 19.7.1 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.6.0 + '@commitlint/types': 19.5.0 + + '@commitlint/load@19.6.1(@types/node@18.19.76)(typescript@5.7.3)': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.5.0': {} + + '@commitlint/parse@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.5.0': + dependencies: + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 0.3.2 + + '@commitlint/resolve-extends@19.5.0': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.6.0': + dependencies: + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 + + '@commitlint/to-lines@19.5.0': {} + + '@commitlint/top-level@19.5.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.5.0': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': + dependencies: + '@types/semver': 7.5.8 + semver: 7.7.1 + optionalDependencies: + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.21.0(jiti@2.4.2))': + dependencies: + eslint: 9.21.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.21.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + + '@fastify/deepmerge@2.0.0': {} + + '@foundryvtt/foundryvtt-cli@1.0.4': + dependencies: + chalk: 5.4.1 + classic-level: 1.4.1 + esm: 3.2.25 + js-yaml: 4.1.0 + mkdirp: 3.0.1 + nedb-promises: 6.2.3 + yargs: 17.7.2 + + '@guanghechen/chalk.types@1.0.3': {} + + '@guanghechen/chalk@1.0.3': + dependencies: + '@guanghechen/chalk.types': 1.0.3 + + '@guanghechen/globby@1.0.2': + dependencies: + fast-glob: 3.3.3 + ignore: 7.0.3 + + '@guanghechen/rollup-plugin-copy@6.0.4(rollup@4.34.8)': + dependencies: + '@guanghechen/chalk': 1.0.3 + '@guanghechen/globby': 1.0.2 + '@guanghechen/std': 1.0.4 + chokidar: 4.0.3 + dir-glob: 3.0.1 + micromatch: 4.0.8 + rollup: 4.34.8 + + '@guanghechen/std@1.0.4': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@hutson/parse-repository-url@5.0.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/pluginutils@5.1.2(rollup@4.34.8)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.34.8 + + '@rollup/rollup-android-arm-eabi@4.34.8': + optional: true + + '@rollup/rollup-android-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-x64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.8': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.8': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.8': + optional: true + + '@seald-io/binary-search-tree@1.0.3': {} + + '@seald-io/nedb@4.0.4': + dependencies: + '@seald-io/binary-search-tree': 1.0.3 + localforage: 1.10.0 + util: 0.12.5 + + '@swc/core-darwin-arm64@1.10.18': + optional: true + + '@swc/core-darwin-x64@1.10.18': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.10.18': + optional: true + + '@swc/core-linux-arm64-gnu@1.10.18': + optional: true + + '@swc/core-linux-arm64-musl@1.10.18': + optional: true + + '@swc/core-linux-x64-gnu@1.10.18': + optional: true + + '@swc/core-linux-x64-musl@1.10.18': + optional: true + + '@swc/core-win32-arm64-msvc@1.10.18': + optional: true + + '@swc/core-win32-ia32-msvc@1.10.18': + optional: true + + '@swc/core-win32-x64-msvc@1.10.18': + optional: true + + '@swc/core@1.10.18': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.10.18 + '@swc/core-darwin-x64': 1.10.18 + '@swc/core-linux-arm-gnueabihf': 1.10.18 + '@swc/core-linux-arm64-gnu': 1.10.18 + '@swc/core-linux-arm64-musl': 1.10.18 + '@swc/core-linux-x64-gnu': 1.10.18 + '@swc/core-linux-x64-musl': 1.10.18 + '@swc/core-win32-arm64-msvc': 1.10.18 + '@swc/core-win32-ia32-msvc': 1.10.18 + '@swc/core-win32-x64-msvc': 1.10.18 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + + '@trysound/sax@0.2.0': {} + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 18.19.76 + + '@types/estree@1.0.6': {} + + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.19.76 + + '@types/jquery@3.5.32': + dependencies: + '@types/sizzle': 2.3.3 + + '@types/json-schema@7.0.15': {} + + '@types/jsonfile@6.1.1': + dependencies: + '@types/node': 18.19.76 + + '@types/node@18.19.76': + dependencies: + undici-types: 5.26.5 + + '@types/normalize-package-data@2.4.4': {} + + '@types/semver@7.5.8': {} + + '@types/sizzle@2.3.3': {} + + '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + eslint: 9.21.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + + '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.21.0(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.24.1': {} + + '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + eslint-visitor-keys: 4.2.0 + + '@vitest/expect@3.0.6': + dependencies: + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0))': + dependencies: + '@vitest/spy': 3.0.6 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + + '@vitest/pretty-format@3.0.6': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.6': + dependencies: + '@vitest/utils': 3.0.6 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.6': + dependencies: + '@vitest/pretty-format': 3.0.6 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.6': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.6': + dependencies: + '@vitest/pretty-format': 3.0.6 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abstract-level@1.0.3: + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + add-stream@1.0.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.0: + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + + array-ify@1.0.0: {} + + assertion-error@2.0.1: {} + + available-typed-arrays@1.0.5: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001699 + electron-to-chromium: 1.5.101 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cac@6.7.14: {} + + call-bind@1.0.2: + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + + callsites@3.1.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001469 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001469: {} + + caniuse-lite@1.0.30001699: {} + + catering@2.1.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chalk@5.4.1: {} + + check-error@2.1.1: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.0.1 + + classic-level@1.4.1: + dependencies: + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + napi-macros: 2.2.2 + node-gyp-build: 4.6.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + commander@7.2.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-angular@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-atom@5.0.0: {} + + conventional-changelog-cli@5.0.0(conventional-commits-filter@5.0.0): + dependencies: + add-stream: 1.0.0 + conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) + meow: 13.2.0 + tempfile: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-changelog-codemirror@5.0.0: {} + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-core@8.0.0(conventional-commits-filter@5.0.0): + dependencies: + '@hutson/parse-repository-url': 5.0.0 + add-stream: 1.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-parser: 6.0.0 + git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + hosted-git-info: 7.0.0 + normalize-package-data: 6.0.0 + read-package-up: 11.0.0 + read-pkg: 9.0.1 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-changelog-ember@5.0.0: {} + + conventional-changelog-eslint@6.0.0: {} + + conventional-changelog-express@5.0.0: {} + + conventional-changelog-jquery@6.0.0: {} + + conventional-changelog-jshint@5.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-preset-loader@5.0.0: {} + + conventional-changelog-writer@8.0.0: + dependencies: + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.7.1 + + conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-atom: 5.0.0 + conventional-changelog-codemirror: 5.0.0 + conventional-changelog-conventionalcommits: 8.0.0 + conventional-changelog-core: 8.0.0(conventional-commits-filter@5.0.0) + conventional-changelog-ember: 5.0.0 + conventional-changelog-eslint: 6.0.0 + conventional-changelog-express: 5.0.0 + conventional-changelog-jquery: 6.0.0 + conventional-changelog-jshint: 5.0.0 + conventional-changelog-preset-loader: 5.0.0 + transitivePeerDependencies: + - conventional-commits-filter + + conventional-commits-filter@5.0.0: {} + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.0 + split2: 4.2.0 + + conventional-commits-parser@6.0.0: + dependencies: + meow: 13.2.0 + + cosmiconfig-typescript-loader@6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + dependencies: + '@types/node': 18.19.76 + cosmiconfig: 9.0.0(typescript@5.7.3) + jiti: 2.4.2 + typescript: 5.7.3 + + cosmiconfig@8.3.6(typescript@5.7.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.7.3 + + cosmiconfig@9.0.0(typescript@5.7.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.3 + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-declaration-sorter@7.2.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@7.0.6(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + css-declaration-sorter: 7.2.0(postcss@8.5.2) + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-calc: 10.1.1(postcss@8.5.2) + postcss-colormin: 7.0.2(postcss@8.5.2) + postcss-convert-values: 7.0.4(postcss@8.5.2) + postcss-discard-comments: 7.0.3(postcss@8.5.2) + postcss-discard-duplicates: 7.0.1(postcss@8.5.2) + postcss-discard-empty: 7.0.0(postcss@8.5.2) + postcss-discard-overridden: 7.0.0(postcss@8.5.2) + postcss-merge-longhand: 7.0.4(postcss@8.5.2) + postcss-merge-rules: 7.0.4(postcss@8.5.2) + postcss-minify-font-values: 7.0.0(postcss@8.5.2) + postcss-minify-gradients: 7.0.0(postcss@8.5.2) + postcss-minify-params: 7.0.2(postcss@8.5.2) + postcss-minify-selectors: 7.0.4(postcss@8.5.2) + postcss-normalize-charset: 7.0.0(postcss@8.5.2) + postcss-normalize-display-values: 7.0.0(postcss@8.5.2) + postcss-normalize-positions: 7.0.0(postcss@8.5.2) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.2) + postcss-normalize-string: 7.0.0(postcss@8.5.2) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.2) + postcss-normalize-unicode: 7.0.2(postcss@8.5.2) + postcss-normalize-url: 7.0.0(postcss@8.5.2) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.2) + postcss-ordered-values: 7.0.1(postcss@8.5.2) + postcss-reduce-initial: 7.0.2(postcss@8.5.2) + postcss-reduce-transforms: 7.0.0(postcss@8.5.2) + postcss-svgo: 7.0.1(postcss@8.5.2) + postcss-unique-selectors: 7.0.3(postcss@8.5.2) + + cssnano-utils@5.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + cssnano@7.0.6(postcss@8.5.2): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.5.2) + lilconfig: 3.1.3 + postcss: 8.5.2 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + dargs@8.1.0: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decode-uri-component@0.4.1: {} + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + define-properties@1.2.0: + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + detect-libc@1.0.3: + optional: true + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.101: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.21.2: + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + + es-module-lexer@1.6.0: {} + + es-set-tostringtag@2.0.1: + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + escalade@3.1.1: {} + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.0.1(eslint@9.21.0(jiti@2.4.2)): + dependencies: + eslint: 9.21.0(jiti@2.4.2) + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.21.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.0 + '@eslint/js': 9.21.0 + '@eslint/plugin-kit': 0.2.7 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + esm@3.2.25: {} + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.5.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + expect-type@1.1.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.15.0: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@5.1.0: {} + + find-up-simple@1.0.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.1: {} + + function-bind@1.1.2: {} + + function.prototype.name@1.1.5: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.0: + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + get-symbol-description@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.0 + split2: 4.2.0 + + git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + dependencies: + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + dependencies: + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@11.0.0: + dependencies: + foreground-child: 3.1.1 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + globals@14.0.0: {} + + globals@16.0.0: {} + + globalthis@1.0.3: + dependencies: + define-properties: 1.2.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.0 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.0: + dependencies: + get-intrinsic: 1.2.0 + + has-proto@1.0.1: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: + dependencies: + has-symbols: 1.0.3 + + has@1.0.3: + dependencies: + function-bind: 1.1.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + hosted-git-info@7.0.0: + dependencies: + lru-cache: 10.0.1 + + icss-utils@5.1.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + ieee754@1.2.1: {} + + ignore@5.3.1: {} + + ignore@7.0.3: {} + + immediate@3.0.6: {} + + immutable@5.0.3: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + index-to-position@0.1.2: {} + + inherits@2.0.4: {} + + ini@4.1.1: {} + + internal-slot@1.0.5: + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-array-buffer@3.0.2: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-core-module@2.11.0: + dependencies: + has: 1.0.3 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.0 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-negative-zero@2.0.2: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + is-shared-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.2 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typed-array@1.1.10: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.2 + + isexe@2.0.0: {} + + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + level-supports@4.0.1: {} + + level-transcoder@1.0.1: + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + loupe@3.1.3: {} + + lru-cache@10.0.1: {} + + lru-cache@11.0.0: {} + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + memorystream@0.3.1: {} + + meow@12.1.0: {} + + meow@13.2.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@3.0.1: {} + + module-error@1.0.2: {} + + ms@2.1.3: {} + + nanoid@3.3.8: {} + + napi-macros@2.2.2: {} + + natural-compare@1.4.0: {} + + nedb-promises@6.2.3: + dependencies: + '@seald-io/nedb': 4.0.4 + + neo-async@2.6.2: {} + + nice-try@1.0.5: {} + + node-addon-api@7.1.1: + optional: true + + node-gyp-build@4.6.0: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + + normalize-package-data@6.0.0: + dependencies: + hosted-git-info: 7.0.0 + is-core-module: 2.11.0 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.0 + string.prototype.padend: 3.1.4 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-inspect@1.12.3: {} + + object-keys@1.1.1: {} + + object.assign@4.1.4: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-queue@8.1.0: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.4 + + p-timeout@6.1.4: {} + + package-json-from-dist@1.0.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.24.7 + index-to-position: 0.1.2 + type-fest: 4.20.0 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.0 + minipass: 7.1.2 + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pidtree@0.3.1: {} + + pify@3.0.0: {} + + postcss-calc@10.1.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-colormin@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.3(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-discard-duplicates@7.0.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-discard-empty@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-discard-overridden@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-merge-longhand@7.0.4(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.4(postcss@8.5.2) + + postcss-merge-rules@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.0(postcss@8.5.2): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.4(postcss@8.5.2): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.2): + dependencies: + icss-utils: 5.1.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.0.11 + + postcss-modules-values@4.0.0(postcss@8.5.2): + dependencies: + icss-utils: 5.1.0(postcss@8.5.2) + postcss: 8.5.2 + + postcss-normalize-charset@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + + postcss-normalize-display-values@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.1(postcss@8.5.2): + dependencies: + cssnano-utils: 5.0.0(postcss@8.5.2) + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.2(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + postcss: 8.5.2 + + postcss-reduce-transforms@7.0.0(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.0.11: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@7.0.3(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.2: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.5.2: {} + + punycode@2.3.0: {} + + query-string@9.1.1: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + queue-microtask@1.2.3: {} + + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.20.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.0 + parse-json: 8.1.0 + type-fest: 4.20.0 + unicorn-magic: 0.1.0 + + readdirp@4.0.1: {} + + regexp.prototype.flags@1.4.3: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.1: + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.0 + + rollup-plugin-styler@2.0.0(rollup@4.34.8)(typescript@5.7.3): + dependencies: + '@rollup/pluginutils': 5.1.2(rollup@4.34.8) + cosmiconfig: 8.3.6(typescript@5.7.3) + cssnano: 7.0.6(postcss@8.5.2) + fs-extra: 11.3.0 + icss-utils: 5.1.0(postcss@8.5.2) + mime-types: 2.1.35 + p-queue: 8.1.0 + postcss: 8.5.2 + postcss-modules-extract-imports: 3.0.0(postcss@8.5.2) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.2) + postcss-modules-scope: 3.0.0(postcss@8.5.2) + postcss-modules-values: 4.0.0(postcss@8.5.2) + postcss-value-parser: 4.2.0 + query-string: 9.1.1 + resolve: 1.22.10 + resolve.exports: 2.0.3 + rollup: 4.34.8 + source-map-js: 1.2.1 + tslib: 2.8.1 + transitivePeerDependencies: + - typescript + + rollup-plugin-swc3@0.12.1(@swc/core@1.10.18)(rollup@4.34.8): + dependencies: + '@dual-bundle/import-meta-resolve': 4.1.0 + '@fastify/deepmerge': 2.0.0 + '@rollup/pluginutils': 5.1.2(rollup@4.34.8) + '@swc/core': 1.10.18 + get-tsconfig: 4.8.1 + rollup: 4.34.8 + rollup-preserve-directives: 1.1.2(rollup@4.34.8) + + rollup-preserve-directives@1.1.2(rollup@4.34.8): + dependencies: + magic-string: 0.30.17 + rollup: 4.34.8 + + rollup@4.34.8: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.8 + '@rollup/rollup-android-arm64': 4.34.8 + '@rollup/rollup-darwin-arm64': 4.34.8 + '@rollup/rollup-darwin-x64': 4.34.8 + '@rollup/rollup-freebsd-arm64': 4.34.8 + '@rollup/rollup-freebsd-x64': 4.34.8 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 + '@rollup/rollup-linux-arm-musleabihf': 4.34.8 + '@rollup/rollup-linux-arm64-gnu': 4.34.8 + '@rollup/rollup-linux-arm64-musl': 4.34.8 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 + '@rollup/rollup-linux-riscv64-gnu': 4.34.8 + '@rollup/rollup-linux-s390x-gnu': 4.34.8 + '@rollup/rollup-linux-x64-gnu': 4.34.8 + '@rollup/rollup-linux-x64-musl': 4.34.8 + '@rollup/rollup-win32-arm64-msvc': 4.34.8 + '@rollup/rollup-win32-ia32-msvc': 4.34.8 + '@rollup/rollup-win32-x64-msvc': 4.34.8 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-regex-test@1.0.0: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + + sass@1.85.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.4.1 + + semver@5.7.1: {} + + semver@7.7.1: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.0: {} + + side-channel@1.0.4: + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + + spdx-exceptions@2.3.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + + spdx-license-ids@3.0.13: {} + + split-on-first@3.0.0: {} + + split2@4.2.0: {} + + stackback@0.0.2: {} + + std-env@3.8.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + + string.prototype.padend@3.1.4: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trim@1.2.7: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trimend@1.0.6: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + string.prototype.trimstart@1.0.6: + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.0.1: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + stylehacks@7.0.4(postcss@8.5.2): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.2 + postcss-selector-parser: 6.1.2 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + temp-dir@3.0.0: {} + + tempfile@5.0.0: + dependencies: + temp-dir: 3.0.0 + + text-extensions@2.4.0: {} + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.0.1(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.20.0: {} + + typed-array-length@1.0.4: + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + + typescript-eslint@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.21.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + typescript@5.7.3: {} + + uglify-js@3.17.4: + optional: true + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@5.26.5: {} + + unicorn-magic@0.1.0: {} + + universalify@2.0.0: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.0 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.10 + which-typed-array: 1.1.9 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vite-node@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + esbuild: 0.24.2 + postcss: 8.5.2 + rollup: 4.34.8 + optionalDependencies: + '@types/node': 18.19.76 + fsevents: 2.3.3 + jiti: 2.4.2 + sass: 1.85.0 + + vitest@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): + dependencies: + '@vitest/expect': 3.0.6 + '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0)) + '@vitest/pretty-format': 3.0.6 + '@vitest/runner': 3.0.6 + '@vitest/snapshot': 3.0.6 + '@vitest/spy': 3.0.6 + '@vitest/utils': 3.0.6 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.1.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + vite-node: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.76 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-typed-array@1.1.9: + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wordwrap@1.0.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.0.1 + + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} diff --git a/pnpm-lock.yaml.license b/pnpm-lock.yaml.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/pnpm-lock.yaml.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..c75da361 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +// @ts-check + +/** + * @type {import("prettier").Config} + */ +export default { + semi: true, + trailingComma: "all", + singleQuote: false, + printWidth: 120, + tabWidth: 2, +}; diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..16438b93 --- /dev/null +++ b/renovate.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:base", ":automergeAll", ":automergePr", ":prHourlyLimitNone", ":prConcurrentLimitNone"], + "packageRules": [ + { + "matchPackagePatterns": ["^@pixi"], + "enabled": false + }, + { + "matchPackageNames": ["@types/node"], + "matchUpdateTypes": ["major"], + "enabled": false + } + ] +} diff --git a/renovate.json.license b/renovate.json.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/renovate.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..af0c04d8 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,63 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import styles from "rollup-plugin-styler"; +import { swc } from "rollup-plugin-swc3"; + +import { copy } from "@guanghechen/rollup-plugin-copy"; + +import { distDirectory, name, sourceDirectory } from "./tools/const.js"; + +const staticFiles = [ + ".reuse", + "assets", + "ATTRIBUTION.md", + "fonts", + "lang", + "LICENSE.md", + "LICENSES", + "README.md", + "system.json.license", + "system.json", + "template.json.license", + "template.json", + "templates", +]; +const isProduction = process.env.NODE_ENV === "production"; + +/** + * @type {import('rollup').RollupOptions} + */ +const config = { + input: { [name]: `${sourceDirectory}/${name}.ts` }, + output: { + dir: distDirectory, + format: "es", + sourcemap: true, + assetFileNames: "[name].[ext]", + }, + plugins: [ + swc({ + jsc: { + minify: isProduction && { + sourceMap: true, + mangle: { + keepClassNames: true, + keepFnNames: true, + }, + }, + }, + sourceMaps: true, + }), + styles({ + mode: ["extract", `css/${name}.css`], + url: false, + sourceMap: true, + minimize: isProduction, + }), + copy({ targets: [{ src: staticFiles, dest: distDirectory }] }), + ], +}; + +export default config; diff --git a/scss/components/actor/_actor_header.scss b/scss/components/actor/_actor_header.scss new file mode 100644 index 00000000..068c0f1a --- /dev/null +++ b/scss/components/actor/_actor_header.scss @@ -0,0 +1,55 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; + +.ds4-actor-header { + display: flex; + flex-grow: 0; + flex-shrink: 0; + gap: 1em; + + &__img { + border: none; + height: 100px; + width: 100px; + &--editable { + cursor: pointer; + } + } + + &__data { + display: flex; + flex-direction: column; + } + + &__data-row { + align-content: center; + display: flex; + flex: 1; + flex-direction: row; + gap: 0.5em; + > * { + flex: 1; + } + } + + &__name { + display: flex; + align-items: center; + border-bottom: 0; + margin: 0; + } + + &__name-input[type="text"] { + @include mixins.font-heading-upper; + background-color: transparent; + border: none; + flex: 1; + font-size: 1.25em; + height: auto; + } +} diff --git a/scss/components/actor/_actor_progression.scss b/scss/components/actor/_actor_progression.scss new file mode 100644 index 00000000..15ac258c --- /dev/null +++ b/scss/components/actor/_actor_progression.scss @@ -0,0 +1,48 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Oliver Rümpelein + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/colors"; +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-actor-progression { + @include mixins.mark-invalid-or-disabled-input; + display: flex; + gap: 0.5em; + + &__entry { + align-items: center; + display: flex; + flex: 1; + gap: 0.25em; + justify-content: flex-end; + } + + &__label { + @include mixins.font-heading-upper; + border: none; + color: colors.$c-light-grey; + margin: 0; + padding: 0; + text-align: right; + } + + &__input { + flex: 0 0 5ch; + + &--slayer-points { + &::-webkit-inner-spin-button, + &::-webkit-outer-spin-button { + -webkit-appearance: auto; + } + &:hover, + &:focus { + -moz-appearance: auto; + } + } + } +} diff --git a/scss/components/actor/_actor_properties.scss b/scss/components/actor/_actor_properties.scss new file mode 100644 index 00000000..78edeb28 --- /dev/null +++ b/scss/components/actor/_actor_properties.scss @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Oliver Rümpelein + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-actor-properties { + @include mixins.mark-invalid-or-disabled-input; + display: flex; + gap: 0.25em; + + &__property { + flex: 1; + } + + &__property-label { + font-size: 0.9em; + font-weight: bold; + white-space: nowrap; + } + + &__property-select { + width: 100%; + height: var(--form-field-height); + } + + &__property-multi-input { + display: flex; + gap: 0.125em; + } +} diff --git a/scss/components/actor/_actor_sheet.scss b/scss/components/actor/_actor_sheet.scss new file mode 100644 index 00000000..7d21ec9c --- /dev/null +++ b/scss/components/actor/_actor_sheet.scss @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-actor-sheet { + min-height: 645px; + min-width: 650px; +} diff --git a/scss/components/actor/_biography.scss b/scss/components/actor/_biography.scss new file mode 100644 index 00000000..cf033a71 --- /dev/null +++ b/scss/components/actor/_biography.scss @@ -0,0 +1,11 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-biography-tab-content { + display: grid; + grid-template-columns: 1fr 3fr; + column-gap: 1em; +} diff --git a/scss/components/actor/_check.scss b/scss/components/actor/_check.scss new file mode 100644 index 00000000..2b64328b --- /dev/null +++ b/scss/components/actor/_check.scss @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; + +.ds4-check { + background: transparent; + border: none; + cursor: pointer; + display: flex; + font-family: inherit; + font-size: inherit; + justify-content: space-between; + line-height: inherit; + margin: 0; + + &:focus { + box-shadow: none; + } + + &:hover { + @include mixins.foundry-highlight-text-shadow; + box-shadow: none; + } + + &[disabled] { + cursor: auto; + &:hover { + text-shadow: none; + } + } +} diff --git a/scss/components/actor/_checks.scss b/scss/components/actor/_checks.scss new file mode 100644 index 00000000..47f0c77a --- /dev/null +++ b/scss/components/actor/_checks.scss @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-checks { + column-gap: 2em; + display: grid; + grid-auto-flow: column; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: repeat(10, 1fr); + row-gap: 0.25em; + white-space: nowrap; +} diff --git a/scss/components/actor/_combat_value.scss b/scss/components/actor/_combat_value.scss new file mode 100644 index 00000000..184aa31e --- /dev/null +++ b/scss/components/actor/_combat_value.scss @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-combat-value { + $size: 3.75rem; + + display: grid; + place-items: center; + row-gap: 0.125em; + + &__value { + $combat-values-icons-path: "#{variables.$official-icons-path}/combat-values"; + @include mixins.centered-content; + + background-position: center; + background-repeat: no-repeat; + background-size: contain; + font-size: 1.5em; + height: $size; + width: $size; + + &--hitPoints { + background-image: url("#{$combat-values-icons-path}/hit-points.png"); + } + &--defense { + background-image: url("#{$combat-values-icons-path}/defense.png"); + } + &--initiative { + background-image: url("#{$combat-values-icons-path}/initiative.png"); + } + &--movement { + background-image: url("#{$combat-values-icons-path}/movement-rate.png"); + } + &--meleeAttack { + background-image: url("#{$combat-values-icons-path}/melee-attack.png"); + } + &--rangedAttack { + background-image: url("#{$combat-values-icons-path}/ranged-attack.png"); + } + &--spellcasting { + background-image: url("#{$combat-values-icons-path}/spellcasting.png"); + } + &--targetedSpellcasting { + background-image: url("#{$combat-values-icons-path}/targeted-spellcasting.png"); + } + } + + &__label { + @include mixins.font-heading-upper; + font-size: 1.2em; + white-space: nowrap; + } + + &__formula { + align-items: center; + justify-content: space-between; + display: flex; + gap: 0.15em; + text-align: center; + width: $size; + } + + &__formula-base, + &__formula-modifier { + flex: 1 1 4em; + } +} diff --git a/scss/components/actor/_combat_values.scss b/scss/components/actor/_combat_values.scss new file mode 100644 index 00000000..def84140 --- /dev/null +++ b/scss/components/actor/_combat_values.scss @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/variables"; + +.ds4-combat-values { + border-bottom: variables.$border-groove; + display: flex; + margin: variables.$margin-sm 0; + padding-bottom: variables.$margin-sm; + justify-content: space-between; +} diff --git a/scss/components/actor/_core_value.scss b/scss/components/actor/_core_value.scss new file mode 100644 index 00000000..140ca89e --- /dev/null +++ b/scss/components/actor/_core_value.scss @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/colors"; +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-core-value { + align-items: center; + display: flex; + + &__label { + @include mixins.font-heading-upper; + flex: 1; + font-size: 2em; + text-align: center; + } + + &__value { + align-items: center; + display: flex; + flex: 1.1; + font-size: 1.2em; + gap: 0.15em; + text-align: center; + } + + &__value-input, + &__value-total { + flex: 1 1 4em; + } + + &--trait { + .ds4-core-value__label { + -webkit-text-stroke: 1px colors.$c-black; + color: transparent; + } + } +} diff --git a/scss/components/actor/_core_values.scss b/scss/components/actor/_core_values.scss new file mode 100644 index 00000000..cf1dc459 --- /dev/null +++ b/scss/components/actor/_core_values.scss @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/colors"; +@use "../../utils/variables"; + +.ds4-core-values { + column-gap: 0.5em; + display: grid; + grid-template-columns: repeat(3, 1fr); + row-gap: 0.5em; +} diff --git a/scss/components/actor/_currency.scss b/scss/components/actor/_currency.scss new file mode 100644 index 00000000..2cbe3c31 --- /dev/null +++ b/scss/components/actor/_currency.scss @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/variables"; + +.ds4-currency { + align-items: center; + display: flex; + gap: 1em; + margin: 0.5em 0; +} + +.ds4-currency-title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; +} diff --git a/scss/components/actor/_description.scss b/scss/components/actor/_description.scss new file mode 100644 index 00000000..37830530 --- /dev/null +++ b/scss/components/actor/_description.scss @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-description { + height: 100%; +} diff --git a/scss/components/actor/_profile.scss b/scss/components/actor/_profile.scss new file mode 100644 index 00000000..cad7b14c --- /dev/null +++ b/scss/components/actor/_profile.scss @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-profile { + display: flex; + flex-direction: column; + gap: 0.5em; + + &__entry { + display: flex; + flex-direction: column; + align-items: center; + } + + &__entry-input { + &--multiline { + resize: none; + } + } + + &__entry-label { + font-size: 0.8em; + font-weight: bold; + } +} diff --git a/scss/components/dice/_dice_total.scss b/scss/components/dice/_dice_total.scss new file mode 100644 index 00000000..5d041aef --- /dev/null +++ b/scss/components/dice/_dice_total.scss @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/colors"; + +// Needs to be nested in .dice-roll to win against foundry's style.css with respect to specificity +.dice-roll .ds4-dice-total { + @mixin color-filter($rotation) { + filter: sepia(0.5) hue-rotate($rotation); + } + + &--coup { + @include color-filter(60deg); + background-color: colors.$c-coup-bg; + color: colors.$c-coup; + } + + &--fumble { + @include color-filter(-60deg); + background-color: colors.$c-fumble-bg; + color: colors.$c-fumble; + } +} diff --git a/scss/components/item/_item_header.scss b/scss/components/item/_item_header.scss new file mode 100644 index 00000000..2e122a36 --- /dev/null +++ b/scss/components/item/_item_header.scss @@ -0,0 +1,51 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/colors"; +@use "../../utils/mixins"; + +.ds4-item-header { + align-items: center; + display: flex; + gap: 1em; + + &__img { + border: none; + cursor: pointer; + height: 100px; + width: 100px; + } + + &__data { + flex: 1; + } + + &__type { + @include mixins.font-heading-upper; + border: none; + color: colors.$c-light-grey; + margin-bottom: 0; + } + + &__name { + border: none; + margin: 0; + } + + &__name-label { + display: none; + } + + &__name-input[type="text"] { + @include mixins.font-heading-upper; + background-color: transparent; + border: none; + font-size: 1.25em; + height: auto; + padding-left: 0; + padding-right: 0; + } +} diff --git a/scss/components/item/_item_properties.scss b/scss/components/item/_item_properties.scss new file mode 100644 index 00000000..903fa97e --- /dev/null +++ b/scss/components/item/_item_properties.scss @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-item-properties { + @include mixins.mark-invalid-or-disabled-input; + + &__title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; + } +} diff --git a/scss/components/item/_item_sheet.scss b/scss/components/item/_item_sheet.scss new file mode 100644 index 00000000..eef6e821 --- /dev/null +++ b/scss/components/item/_item_sheet.scss @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-item-sheet { + min-height: 400px; + min-width: 540px; +} diff --git a/scss/components/shared/_add_button.scss b/scss/components/shared/_add_button.scss new file mode 100644 index 00000000..0b61713d --- /dev/null +++ b/scss/components/shared/_add_button.scss @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-add-button { + padding: 0 calc(1em / 3); +} diff --git a/scss/components/shared/_checkbox_grid.scss b/scss/components/shared/_checkbox_grid.scss new file mode 100644 index 00000000..52dd9ec3 --- /dev/null +++ b/scss/components/shared/_checkbox_grid.scss @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-checkbox-grid { + $gap: 3px; + gap: $gap; + display: grid; + font-size: var(--font-size-12); + grid-template-columns: 1fr 1fr; + + &__item { + align-items: center; + display: flex; + gap: $gap; + justify-content: flex-start; + > * { + flex: 0 0 auto; + } + } + + &__checkbox[type="checkbox"] { + margin: 0; + } +} diff --git a/scss/components/shared/_control_button_group.scss b/scss/components/shared/_control_button_group.scss new file mode 100644 index 00000000..faa39058 --- /dev/null +++ b/scss/components/shared/_control_button_group.scss @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-control-button-group { + display: flex; + text-align: center; + width: 100%; + padding: 0 calc(1em / 3); + + &__button { + flex: 1; + } +} diff --git a/scss/components/shared/_editor.scss b/scss/components/shared/_editor.scss new file mode 100644 index 00000000..dead15ce --- /dev/null +++ b/scss/components/shared/_editor.scss @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-sheet-form { + .editor { + height: 100%; + + .tox { + .tox-toolbar-overlord, + .tox-toolbar__primary { + background: transparent; + } + } + } +} diff --git a/scss/components/shared/_embedded_document_list.scss b/scss/components/shared/_embedded_document_list.scss new file mode 100644 index 00000000..50b8d5e1 --- /dev/null +++ b/scss/components/shared/_embedded_document_list.scss @@ -0,0 +1,152 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/mixins"; +@use "../../utils/variables"; + +.ds4-embedded-document-list { + @include mixins.mark-invalid-or-disabled-input; + + $row-height: 1.75em; + + display: grid; + grid-column-gap: 0.5em; + grid-row-gap: 0.2em; + margin: 0; + padding: 0.5em 0; + + &--weapon { + grid-template-columns: $row-height $row-height 3ch 3fr $row-height 1fr 3ch 5fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 5), + :nth-child(9n + 6), + :nth-child(9n + 7) { + justify-self: center; + } + } + &--armor { + grid-template-columns: $row-height $row-height 3ch 3fr 1fr 1fr 3ch 5fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 7) { + justify-self: center; + } + } + &--shield { + grid-template-columns: $row-height $row-height 3ch 1fr 3ch 3fr 5ch; + :nth-child(7n + 1), + :nth-child(7n + 5) { + justify-self: center; + } + } + &--equipment { + grid-template-columns: $row-height $row-height 3ch 1fr 10ch 3fr 5ch; + :nth-child(7n + 1) { + justify-self: center; + } + } + &--loot { + grid-template-columns: $row-height 3ch 1fr 10ch 3fr 5ch; + } + &--spell { + grid-template-columns: $row-height $row-height 2fr $row-height 1fr 1fr 1fr 1fr 5ch; + :nth-child(9n + 1), + :nth-child(9n + 4) { + justify-self: center; + } + } + &--talent { + grid-template-columns: $row-height 1fr 4ch 3fr 5ch; + :nth-child(9n + 3) { + justify-self: center; + } + } + &--racial-ability, + &--language, + &--alphabet, + &--special-creature-ability { + grid-template-columns: $row-height 1fr 3fr 5ch; + } + + &--effect { + grid-template-columns: $row-height $row-height $row-height 3fr 2fr $row-height 5ch; + :nth-child(7n + 1), + :nth-child(7n + 2), + :nth-child(7n + 6) { + justify-self: center; + } + } + + &--item-effect { + grid-template-columns: $row-height 1fr 5ch; + } + + &__row { + display: contents; // TODO: Once chromium supports `grid-template-columns: subgrid` (https://bugs.chromium.org/p/chromium/issues/detail?id=618969), switch to `display: grid; grid: 1/-1; grid-template-columns: subgrid` + + &--header { + font-weight: bold; + } + + > * { + height: $row-height; + line-height: $row-height; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + &__image { + border: none; + } + + &__editable { + &[type="text"], + &[type="number"] { + background-color: transparent; + border: 0; + padding: 0; + height: 100%; + } + + &--checkbox { + &[type="checkbox"] { + width: 100%; + height: 100%; + margin: 0px; + } + } + } + + &__description { + overflow: hidden; + text-overflow: ellipsis; + + :not(:first-child) { + display: none; + } + + > * { + font-size: 0.75em; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &__clickable { + cursor: pointer; + } +} + +.ds4-embedded-document-list-title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; +} diff --git a/scss/components/shared/_form_group.scss b/scss/components/shared/_form_group.scss new file mode 100644 index 00000000..12687e48 --- /dev/null +++ b/scss/components/shared/_form_group.scss @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-form-group { + clear: both; + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: 3px 0; + align-items: center; + + &--start { + align-items: flex-start; + } + + & > * { + flex: 3; + } + + &__label { + flex: 2; + line-height: var(--form-field-height); + } +} diff --git a/scss/components/shared/_rollable_image.scss b/scss/components/shared/_rollable_image.scss new file mode 100644 index 00000000..53affbcd --- /dev/null +++ b/scss/components/shared/_rollable_image.scss @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-rollable-image { + position: relative; + + &--rollable { + cursor: pointer; + + &:hover { + .ds4-rollable-image__image { + opacity: 0.25; + } + + .ds4-rollable-image__overlay { + opacity: 1; + } + } + } + + &__image { + border: none; + transition: 0.1s ease; + } + + &__overlay { + border: none; + bottom: 0; + left: 0; + opacity: 0; + position: absolute; + right: 0; + top: 0; + transition: 0.1s ease; + } +} diff --git a/scss/components/shared/_sheet_body.scss b/scss/components/shared/_sheet_body.scss new file mode 100644 index 00000000..3b19d5ca --- /dev/null +++ b/scss/components/shared/_sheet_body.scss @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-sheet-body { + height: 100%; + overflow-y: auto; +} diff --git a/scss/components/shared/_sheet_form.scss b/scss/components/shared/_sheet_form.scss new file mode 100644 index 00000000..861de722 --- /dev/null +++ b/scss/components/shared/_sheet_form.scss @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-sheet-form { + display: flex; + flex-direction: column; + flex-wrap: nowrap; + font-family: var(--ds4-font-primary); + height: 100%; +} diff --git a/scss/components/shared/_sheet_tab.scss b/scss/components/shared/_sheet_tab.scss new file mode 100644 index 00000000..ea1d13fc --- /dev/null +++ b/scss/components/shared/_sheet_tab.scss @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-sheet-tab { + flex-direction: column; + flex-wrap: nowrap; + height: 100%; + + &[data-tab].active { + display: flex; + } + + > * { + flex-shrink: 0; + } +} diff --git a/scss/components/shared/_sheet_tab_nav.scss b/scss/components/shared/_sheet_tab_nav.scss new file mode 100644 index 00000000..676fea60 --- /dev/null +++ b/scss/components/shared/_sheet_tab_nav.scss @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "../../utils/variables"; + +.ds4-sheet-tab-nav { + border-bottom: variables.$border-groove; + border-top: variables.$border-groove; + display: flex; + flex-wrap: nowrap; + height: calc(2 * var(--line-height-16)); + justify-content: space-around; + line-height: calc(2 * var(--line-height-16)); + margin: variables.$margin-sm 0; + + &__item { + flex: 0 1 auto !important; // necessary to override the styling from lang-de, see https://gitlab.com/henry4k/foundryvtt-lang-de/-/issues/9 + font-weight: bold; + white-space: nowrap; + + &.active { + text-shadow: 0 0 variables.$padding-md var(--color-shadow-primary); + } + } +} diff --git a/scss/ds4.scss b/scss/ds4.scss new file mode 100644 index 00000000..4f533640 --- /dev/null +++ b/scss/ds4.scss @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Oliver Rümpelein + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +// global +@import "global/accessibility"; +@import "global/fonts"; +@import "global/utils"; + +// shared +@import "components/shared/add_button"; +@import "components/shared/control_button_group"; +@import "components/shared/checkbox_grid"; +@import "components/shared/editor"; +@import "components/shared/embedded_document_list"; +@import "components/shared/form_group"; +@import "components/shared/rollable_image"; +@import "components/shared/sheet_body"; +@import "components/shared/sheet_form"; +@import "components/shared/sheet_tab_nav"; +@import "components/shared/sheet_tab"; + +// actor +@import "components/actor/actor_header"; +@import "components/actor/actor_progression"; +@import "components/actor/actor_properties"; +@import "components/actor/actor_sheet"; +@import "components/actor/biography"; +@import "components/actor/check"; +@import "components/actor/checks"; +@import "components/actor/combat_value"; +@import "components/actor/combat_values"; +@import "components/actor/core_value"; +@import "components/actor/core_values"; +@import "components/actor/currency"; +@import "components/actor/description"; +@import "components/actor/profile"; + +// item +@import "components/item/item_header"; +@import "components/item/item_properties"; +@import "components/item/item_sheet"; + +// dice +@import "components/dice/dice_total"; diff --git a/scss/global/_accessibility.scss b/scss/global/_accessibility.scss new file mode 100644 index 00000000..6e82b2c9 --- /dev/null +++ b/scss/global/_accessibility.scss @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Oliver Rümpelein + * + * SPDX-License-Identifier: MIT + */ + +.ds4-hidden { + display: none; +} + +// This is needed for higher specifity +form .ds4-hidden { + display: none; +} diff --git a/scss/global/_fonts.scss b/scss/global/_fonts.scss new file mode 100644 index 00000000..4e79e4c0 --- /dev/null +++ b/scss/global/_fonts.scss @@ -0,0 +1,60 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@font-face { + font-display: swap; + font-family: "Lora"; + font-style: normal; + font-weight: normal; + src: + local("Lora"), + url("../fonts/Lora/Lora.woff") format("woff"); +} + +@font-face { + font-display: swap; + font-family: "Lora"; + font-style: normal; + font-weight: bold; + src: + local("Lora"), + url("../fonts/Lora/Lora-Bold.woff") format("woff"); +} + +@font-face { + font-display: swap; + font-family: "Lora"; + font-style: italic; + font-weight: normal; + src: + local("Lora"), + url("../fonts/Lora/Lora-Italic.woff") format("woff"); +} + +@font-face { + font-display: swap; + font-family: "Lora"; + font-style: italic; + font-weight: bold; + src: + local("Lora"), + url("../fonts/Lora/Lora-BoldItalic.woff") format("woff"); +} + +@font-face { + font-display: swap; + font-family: "Wood Stamp"; + font-style: normal; + font-weight: normal; + src: + local("Wood Stamp"), + url("../fonts/Woodstamp/Woodstamp.woff") format("woff"); +} + +:root { + --ds4-font-primary: Lora, serif; + --ds4-font-heading: "Wood Stamp", sans-serif; +} diff --git a/scss/global/_utils.scss b/scss/global/_utils.scss new file mode 100644 index 00000000..4f982d05 --- /dev/null +++ b/scss/global/_utils.scss @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2022 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +.ds4-code-input { + font-family: var(--font-mono); +} + +// This is needed for higher specifity +form .ds4-code-input { + font-family: var(--font-mono); +} diff --git a/scss/utils/_colors.scss b/scss/utils/_colors.scss new file mode 100644 index 00000000..490d3294 --- /dev/null +++ b/scss/utils/_colors.scss @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +$c-white: #fff; +$c-black: #000; +$c-light-grey: #777; +$c-border-groove: #eeede0; +$c-invalid-input: rgba(lightcoral, 50%); +$c-coup: #18520b; +$c-coup-bg: #acc2a7; +$c-fumble: #aa0200; +$c-fumble-bg: #d8b5ba; diff --git a/scss/utils/_mixins.scss b/scss/utils/_mixins.scss new file mode 100644 index 00000000..edd0775f --- /dev/null +++ b/scss/utils/_mixins.scss @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * SPDX-FileCopyrightText: 2021 Gesina Schwalbe + * + * SPDX-License-Identifier: MIT + */ + +@use "./colors"; + +@mixin centered-content { + display: grid; + place-items: center; +} + +@mixin mark-invalid-or-disabled-input { + input:invalid { + background-color: colors.$c-invalid-input; + } + input:disabled { + background-color: transparent; + } +} + +@mixin foundry-highlight-text-shadow { + text-shadow: 0 0 10px var(--color-shadow-primary); +} + +@mixin font-heading-upper { + font-family: var(--ds4-font-heading); + text-transform: uppercase; +} diff --git a/scss/utils/_variables.scss b/scss/utils/_variables.scss new file mode 100644 index 00000000..9909c4ed --- /dev/null +++ b/scss/utils/_variables.scss @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2021 Johannes Loher + * + * SPDX-License-Identifier: MIT + */ + +@use "./colors"; + +$padding-sm: 5px; +$padding-md: 10px; +$padding-lg: 20px; +$margin-sm: $padding-sm; +$margin-md: $padding-md; +$margin-lg: $padding-lg; + +$official-icons-path: "../assets/icons/official"; + +$border-groove: 2px groove colors.$c-border-groove; diff --git a/spec/dice/check-evaluation.spec.ts b/spec/dice/check-evaluation.spec.ts new file mode 100644 index 00000000..f905426f --- /dev/null +++ b/spec/dice/check-evaluation.spec.ts @@ -0,0 +1,374 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { evaluateCheck } from "../../src/dice/check-evaluation"; + +describe("evaluateCheck with no dice", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([], 10)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with more dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10, 10], 10)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with less dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10], 21)).toThrow("Invalid number of dice."); + }); +}); + +describe("evaluateCheck with a single die", () => { + it("should assign the checkTargetNumber to the single die and be successful.", () => { + expect(evaluateCheck([4], 12)).toEqual([{ result: 4, checkTargetNumber: 12, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on upper edge case and be successful.", () => { + expect(evaluateCheck([4], 4)).toEqual([{ result: 4, checkTargetNumber: 4, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on lower edge case not be successful.", () => { + expect(evaluateCheck([5], 4)).toEqual([{ result: 5, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and not be successful on upper edge case '19'", () => { + expect(evaluateCheck([19], 4)).toEqual([{ result: 19, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and coup on '1'", () => { + expect(evaluateCheck([1], 4)).toEqual([ + { result: 1, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on '20'", () => { + expect(evaluateCheck([20], 4)).toEqual([ + { result: 20, checkTargetNumber: 4, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and coup on 1", () => { + expect(evaluateCheck([1], 0)).toEqual([ + { result: 1, checkTargetNumber: 0, active: true, discarded: false, success: true, count: 0 }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and fail on values > 1 and < 20", () => { + for (let i = 2; i < 20; i++) { + expect(evaluateCheck([i], 0)).toEqual([{ result: i, checkTargetNumber: 0, active: false, discarded: true }]); + } + }); + + it("should roll a die even when the checkTargetNumber is 0 and fumble on 20", () => { + expect(evaluateCheck([20], 0)).toEqual([ + { result: 20, checkTargetNumber: 0, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and coup on 1", () => { + expect(evaluateCheck([1], -1)).toEqual([ + { result: 1, checkTargetNumber: -1, active: true, discarded: false, success: true, count: -1 }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fail on values > 1 and < 20", () => { + for (let i = 2; i < 20; i++) { + expect(evaluateCheck([i], -1)).toEqual([{ result: i, checkTargetNumber: -1, active: false, discarded: true }]); + } + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fumble on 20", () => { + expect(evaluateCheck([20], -1)).toEqual([ + { result: 20, checkTargetNumber: -1, active: false, discarded: true, failure: true }, + ]); + }); +}); + +describe("evaluateCheck with a single die and coup / fumble modification", () => { + const maximumCoupResult = 2; + const minimumFumbleResult = 19; + + it("should assign the checkTargetNumber to the single die and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], 4, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: 4, + active: true, + discarded: false, + success: true, + count: 4, + }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not coup on lower edge case 'maximumCoupResult + 1'", () => { + expect(evaluateCheck([maximumCoupResult + 1], 4, { maximumCoupResult })).toEqual([ + { result: maximumCoupResult + 1, checkTargetNumber: 4, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on 'minimumFumbleResultResult'", () => { + expect(evaluateCheck([minimumFumbleResult], 20, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not fumble on upper edge case 'minimumFumbleResult - 1'", () => { + expect(evaluateCheck([minimumFumbleResult - 1], 20, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult - 1, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], 0, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: 0, + active: true, + discarded: false, + success: true, + count: 0, + }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { + for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { + expect(evaluateCheck([i], 0, { maximumCoupResult, minimumFumbleResult })).toEqual([ + { result: i, checkTargetNumber: 0, active: false, discarded: true }, + ]); + } + }); + + it("should roll a die even when the checkTargetNumber is 0 and fumble on 'minimumFumbleResult'", () => { + expect(evaluateCheck([minimumFumbleResult], 0, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: 0, active: false, discarded: true, failure: true }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([maximumCoupResult], -1, { maximumCoupResult })).toEqual([ + { + result: maximumCoupResult, + checkTargetNumber: -1, + active: true, + discarded: false, + success: true, + count: -1, + }, + ]); + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { + for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { + expect(evaluateCheck([i], -1, { maximumCoupResult, minimumFumbleResult })).toEqual([ + { result: i, checkTargetNumber: -1, active: false, discarded: true }, + ]); + } + }); + + it("should roll a die even when the checkTargetNumber is < 0 and fumble on 'minimumFumbleResult'", () => { + expect(evaluateCheck([minimumFumbleResult], -1, { minimumFumbleResult })).toEqual([ + { result: minimumFumbleResult, checkTargetNumber: -1, active: false, discarded: true, failure: true }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup, even if the first is '20'.", () => { + expect(evaluateCheck([20, 6, 15], 48)).toEqual([ + { result: 20, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups.", () => { + expect(evaluateCheck([1, 1, 1], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48)).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 1], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 1, 20], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 1, 8], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([1, 8], 24)).toEqual([ + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([1, 19], 38)).toEqual([ + { result: 1, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 1, 15], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice and coup / fumble modification", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup and fumble if the first is '19'.", () => { + expect(evaluateCheck([19, 15, 6], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups ('1' and '2').", () => { + expect(evaluateCheck([2, 1, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 2, 20], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '19'.", () => { + expect(evaluateCheck([15, 2, 19], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 2, 8], 46, { maximumCoupResult: 2 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([2, 8], 24, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([2, 19], 38, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup ('1' and '2') and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 2, 15], 48, { maximumCoupResult: 2 })).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should use all the dice if they are coups, even if they are higher than the checkTargetNumber", () => { + expect(evaluateCheck([18, 19, 17], 48, { maximumCoupResult: 19 })).toEqual([ + { result: 18, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 17, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); +}); diff --git a/spec/documents/item/spell/calculate-spell-price.spec.ts b/spec/documents/item/spell/calculate-spell-price.spec.ts new file mode 100644 index 00000000..4f97de6c --- /dev/null +++ b/spec/documents/item/spell/calculate-spell-price.spec.ts @@ -0,0 +1,234 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { calculateSpellPrice } from "../../../../src/documents/item/spell/calculate-spell-price"; + +import type { CooldownDuration, DS4SpellDataSourceData } from "../../../../src/documents/item/spell/spell-data-source"; + +const defaultData: DS4SpellDataSourceData = { + description: "", + equipped: false, + spellType: "spellcasting", + spellModifier: { + numerical: 0, + complex: "", + }, + allowsDefense: false, + spellGroups: { + lightning: false, + earth: false, + water: false, + ice: false, + fire: false, + healing: false, + light: false, + 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: "", + unit: "meter", + }, + duration: { + value: "", + unit: "custom", + }, + cooldownDuration: "0r", + minimumLevels: { + healer: null, + wizard: null, + sorcerer: null, + }, +}; + +type TestCase = { + minimumLevel: number | null; + expected: number | null; +}; + +type CombinedTestCase = { + minimumLevels: DS4SpellDataSourceData["minimumLevels"]; + expected: number | null; + description: string; +}; + +const testCases: Record = { + healer: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 45 }, + { minimumLevel: 3, expected: 80 }, + { minimumLevel: 4, expected: 115 }, + { minimumLevel: 5, expected: 150 }, + { minimumLevel: 6, expected: 185 }, + { minimumLevel: 7, expected: 220 }, + { minimumLevel: 8, expected: 255 }, + { minimumLevel: 9, expected: 290 }, + { minimumLevel: 10, expected: 325 }, + { minimumLevel: 11, expected: 360 }, + { minimumLevel: 12, expected: 395 }, + { minimumLevel: 13, expected: 430 }, + { minimumLevel: 14, expected: 465 }, + { minimumLevel: 15, expected: 500 }, + { minimumLevel: 16, expected: 535 }, + { minimumLevel: 17, expected: 570 }, + { minimumLevel: 18, expected: 605 }, + { minimumLevel: 19, expected: 640 }, + { minimumLevel: 20, expected: 675 }, + ], + sorcerer: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 75 }, + { minimumLevel: 3, expected: 140 }, + { minimumLevel: 4, expected: 205 }, + { minimumLevel: 5, expected: 270 }, + { minimumLevel: 6, expected: 335 }, + { minimumLevel: 7, expected: 400 }, + { minimumLevel: 8, expected: 465 }, + { minimumLevel: 9, expected: 530 }, + { minimumLevel: 10, expected: 595 }, + { minimumLevel: 11, expected: 660 }, + { minimumLevel: 12, expected: 725 }, + { minimumLevel: 13, expected: 790 }, + { minimumLevel: 14, expected: 855 }, + { minimumLevel: 15, expected: 920 }, + { minimumLevel: 16, expected: 985 }, + { minimumLevel: 17, expected: 1050 }, + { minimumLevel: 18, expected: 1115 }, + { minimumLevel: 19, expected: 1180 }, + { minimumLevel: 20, expected: 1245 }, + ], + wizard: [ + { minimumLevel: null, expected: null }, + { minimumLevel: 1, expected: 10 }, + { minimumLevel: 2, expected: 60 }, + { minimumLevel: 3, expected: 110 }, + { minimumLevel: 4, expected: 160 }, + { minimumLevel: 5, expected: 210 }, + { minimumLevel: 6, expected: 260 }, + { minimumLevel: 7, expected: 310 }, + { minimumLevel: 8, expected: 360 }, + { minimumLevel: 9, expected: 410 }, + { minimumLevel: 10, expected: 460 }, + { minimumLevel: 11, expected: 510 }, + { minimumLevel: 12, expected: 560 }, + { minimumLevel: 13, expected: 610 }, + { minimumLevel: 14, expected: 660 }, + { minimumLevel: 15, expected: 710 }, + { minimumLevel: 16, expected: 760 }, + { minimumLevel: 17, expected: 810 }, + { minimumLevel: 18, expected: 860 }, + { minimumLevel: 19, expected: 910 }, + { minimumLevel: 20, expected: 960 }, + ], +}; + +function buildCombinedTestCases(): CombinedTestCase[] { + const combinedTestCases: CombinedTestCase[] = []; + + // permutation test cases + const isRelevantPermutationTestCase = (t: TestCase) => + ([null, 1, 10, 20] as (number | null)[]).includes(t.minimumLevel); + + for (const healerTestCase of testCases.healer.filter(isRelevantPermutationTestCase)) { + for (const sorcererTestCase of testCases.sorcerer.filter(isRelevantPermutationTestCase)) { + for (const wizardTestCase of testCases.wizard.filter(isRelevantPermutationTestCase)) { + const expected = + healerTestCase.expected !== null || sorcererTestCase.expected !== null || wizardTestCase.expected !== null + ? Math.min( + healerTestCase.expected ?? Infinity, + sorcererTestCase.expected ?? Infinity, + wizardTestCase.expected ?? Infinity, + ) + : null; + const minimumLevels = { + healer: healerTestCase.minimumLevel, + sorcerer: sorcererTestCase.minimumLevel, + wizard: wizardTestCase.minimumLevel, + }; + const description = JSON.stringify(minimumLevels); + combinedTestCases.push({ + minimumLevels, + expected, + description, + }); + } + } + } + + // single test cases + const isRelevantSingleTestCase = (t: TestCase) => t.minimumLevel !== null; + + for (const spellCasterClass of ["healer", "sorcerer", "wizard"] as const) { + for (const testCase of testCases[spellCasterClass].filter(isRelevantSingleTestCase)) { + const minimumLevels = { + ...defaultData.minimumLevels, + [spellCasterClass]: testCase.minimumLevel, + }; + const description = JSON.stringify(minimumLevels); + combinedTestCases.push({ + minimumLevels, + expected: testCase.expected, + description, + }); + } + } + + return combinedTestCases; +} + +describe("calculateSpellPrice", () => { + const cooldownDurations: { cooldownDuration: CooldownDuration; factor: number }[] = [ + { cooldownDuration: "0r", factor: 1 }, + { cooldownDuration: "1r", factor: 1 }, + { cooldownDuration: "2r", factor: 1 }, + { cooldownDuration: "5r", factor: 1 }, + { cooldownDuration: "10r", factor: 1 }, + { cooldownDuration: "100r", factor: 1 }, + { cooldownDuration: "1d", factor: 2 }, + { cooldownDuration: "d20d", factor: 3 }, + ]; + + describe.each(cooldownDurations)( + "with cooldown duration set to $cooldownDuration", + ({ cooldownDuration, factor }) => { + const dataWithCooldownDuration = { + ...defaultData, + cooldownDuration, + }; + + it.each(buildCombinedTestCases())( + `returns ${factor} × $expected if the minimum leves are $description`, + ({ minimumLevels, expected }) => { + // given + const data: DS4SpellDataSourceData = { + ...dataWithCooldownDuration, + minimumLevels, + }; + + // when + const spellPrice = calculateSpellPrice(data); + + // then + expect(spellPrice).toBe(expected !== null ? expected * factor : expected); + }, + ); + }, + ); +}); diff --git a/spec/expression-evaluation/evaluator.spec.ts b/spec/expression-evaluation/evaluator.spec.ts new file mode 100644 index 00000000..57b32abc --- /dev/null +++ b/spec/expression-evaluation/evaluator.spec.ts @@ -0,0 +1,90 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { defaultEvaluator, Evaluator, mathEvaluator } from "../../src/expression-evaluation/evaluator"; + +describe("Evaluator", () => { + it("evaluates expressions that only use identifiers according to the given predicate", () => { + // given + const expression = "typeof 'foo' === 'string' ? 42 : null"; + + // when + const result = defaultEvaluator.evaluate(expression); + + // then + expect(result).toEqual(42); + }); + + it("fails to evaluate expressions that contain identifiers that are not allowed by the predicate", () => { + // given + const expression = "typeof 'foo' === 'string' ? 42 : function (){}"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("'function' is not an allowed identifier."); + }); + + it("fails to evaluate expressions that contain invalid tokens", () => { + // given + const expression = "1;"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("Invalid or unexpected token (1)"); + }); + + it("fails to evaluate expressions that contain arrow functions", () => { + // given + const expression = "(() => 1)()"; + + // when + const evaluate = () => defaultEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("Invalid or unexpected token (4)"); + }); + + it("makes the given context available", () => { + // given + const context = { floor: Math.floor }; + const evaluator = new Evaluator({ context }); + const expression = "floor(0.5)"; + + // when + const result = evaluator.evaluate(expression); + + // then + expect(result).toEqual(0); + }); + + describe("mathEvaluator", () => { + it("makes the given context available", () => { + // given + const expression = "sqrt(sin(PI))"; + + // when + const result = mathEvaluator.evaluate(expression); + + // then + expect(result).toEqual(Math.sqrt(Math.sin(Math.PI))); + }); + + it("does not give acces to the function constructor", () => { + // given + const expression = "sqrt.constructor"; + + // when + const evaluate = () => mathEvaluator.evaluate(expression); + + // then + expect(evaluate).toThrowError("'constructor' is not an allowed identifier."); + }); + }); +}); diff --git a/spec/expression-evaluation/lexer.spec.ts b/spec/expression-evaluation/lexer.spec.ts new file mode 100644 index 00000000..ffb9a2b2 --- /dev/null +++ b/spec/expression-evaluation/lexer.spec.ts @@ -0,0 +1,602 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { Lexer } from "../../src/expression-evaluation/lexer"; + +import type { Token } from "../../src/expression-evaluation/grammar"; + +describe("Lexer", () => { + const singleOperatorTestCases: { input: string; expected: Token[] }[] = [ + { + input: "+", + expected: [ + { type: "+", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "-", + expected: [ + { type: "-", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "*", + expected: [ + { type: "*", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "**", + expected: [ + { type: "**", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "/", + expected: [ + { type: "/", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "%", + expected: [ + { type: "%", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "===", + expected: [ + { type: "===", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "!==", + expected: [ + { type: "!==", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "==", + expected: [ + { type: "==", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "<", + expected: [ + { type: "<", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "<=", + expected: [ + { type: "<=", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: ">", + expected: [ + { type: ">", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ">=", + expected: [ + { type: ">=", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "&&", + expected: [ + { type: "&&", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "||", + expected: [ + { type: "||", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "&", + expected: [ + { type: "&", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "|", + expected: [ + { type: "|", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "<<", + expected: [ + { type: "<<", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: ">>>", + expected: [ + { type: ">>>", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: ".", + expected: [ + { type: ".", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "?.", + expected: [ + { type: "?.", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "??", + expected: [ + { type: "??", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "?", + expected: [ + { type: "?", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ":", + expected: [ + { type: ":", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "(", + expected: [ + { type: "(", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ")", + expected: [ + { type: ")", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "[", + expected: [ + { type: "[", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "]", + expected: [ + { type: "]", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: ",", + expected: [ + { type: ",", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "{", + expected: [ + { type: "{", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "}", + expected: [ + { type: "}", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + ]; + + const singleNumberTestCases: { input: string; expected: Token[] }[] = [ + { + input: "1", + expected: [ + { type: "number", symbol: "1", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "42", + expected: [ + { type: "number", symbol: "42", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "42.9", + expected: [ + { type: "number", symbol: "42.9", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: ".9", + expected: [ + { type: "number", symbol: ".9", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "1_1", + expected: [ + { type: "number", symbol: "1_1", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "10_1", + expected: [ + { type: "number", symbol: "10_1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "1_1_1", + expected: [ + { type: "number", symbol: "1_1_1", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: ".1_1", + expected: [ + { type: "number", symbol: ".1_1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + ]; + + const invalidNumberTestCases: { input: string; expected: Token[] }[] = [ + { input: "1.1.1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1__1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1_", expected: [{ type: "invalid", pos: 0 }] }, + { input: "1._1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "0_1", expected: [{ type: "invalid", pos: 0 }] }, + { input: "00_1", expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const singleIdentifierTestCases: { input: string; expected: Token[] }[] = [ + { + input: "foo", + expected: [ + { type: "iden", symbol: "foo", pos: 0 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "_foo", + expected: [ + { type: "iden", symbol: "_foo", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "$foo", + expected: [ + { type: "iden", symbol: "$foo", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "foo1", + expected: [ + { type: "iden", symbol: "foo1", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "_foo1_", + expected: [ + { type: "iden", symbol: "_foo1_", pos: 0 }, + { type: "eof", pos: 6 }, + ], + }, + { + input: "μ", + expected: [ + { type: "iden", symbol: "μ", pos: 0 }, + { type: "eof", pos: 1 }, + ], + }, + { + input: "._1", + expected: [ + { type: ".", pos: 0 }, + { type: "iden", symbol: "_1", pos: 1 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "true", + expected: [ + { type: "iden", symbol: "true", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "false", + expected: [ + { type: "iden", symbol: "false", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "null", + expected: [ + { type: "iden", symbol: "null", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "undefined", + expected: [ + { type: "iden", symbol: "undefined", pos: 0 }, + { type: "eof", pos: 9 }, + ], + }, + ]; + + const invalidIdentifierTestCases: { input: string; expected: Token[] }[] = [ + { + input: "1foo", + expected: [ + { type: "number", symbol: "1", pos: 0 }, + { type: "iden", symbol: "foo", pos: 1 }, + { type: "eof", pos: 4 }, + ], + }, + { input: "↓", expected: [{ type: "invalid", pos: 0 }] }, + { input: '"', expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const singleStringTestCases: { input: string; expected: Token[] }[] = [ + { + input: '""', + expected: [ + { type: "string", symbol: '""', pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: '"foo"', + expected: [ + { type: "string", symbol: '"foo"', pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: '"\\""', + expected: [ + { type: "string", symbol: '"\\""', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: '"\\\'"', + expected: [ + { type: "string", symbol: '"\\\'"', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "''", + expected: [ + { type: "string", symbol: "''", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "'foo'", + expected: [ + { type: "string", symbol: "'foo'", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "'\\''", + expected: [ + { type: "string", symbol: "'\\''", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "'\\\"'", + expected: [ + { type: "string", symbol: "'\\\"'", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: "``", + expected: [ + { type: "string", symbol: "``", pos: 0 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "`foo`", + expected: [ + { type: "string", symbol: "`foo`", pos: 0 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "`\\``", + expected: [ + { type: "string", symbol: "`\\``", pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + { + input: '`\\"`', + expected: [ + { type: "string", symbol: '`\\"`', pos: 0 }, + { type: "eof", pos: 4 }, + ], + }, + ]; + + const invalidStringTestCases: { input: string; expected: Token[] }[] = [ + { input: '"', expected: [{ type: "invalid", pos: 0 }] }, + { input: '"\\"', expected: [{ type: "invalid", pos: 0 }] }, + { input: "'", expected: [{ type: "invalid", pos: 0 }] }, + { input: "'\\'", expected: [{ type: "invalid", pos: 0 }] }, + ]; + + const whiteSpaceTestCases: { input: string; expected: Token[] }[] = [ + { input: " ", expected: [{ type: "eof", pos: 1 }] }, + { input: " ", expected: [{ type: "eof", pos: 3 }] }, + { input: "\n", expected: [{ type: "eof", pos: 1 }] }, + { input: " \n", expected: [{ type: "eof", pos: 2 }] }, + { input: " ", expected: [{ type: "eof", pos: 1 }] }, + ]; + + const complicatedTermTestCases: { input: string; expected: Token[] }[] = [ + { + input: "5x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "iden", symbol: "x", pos: 1 }, + { type: "eof", pos: 2 }, + ], + }, + { + input: "5*x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "*", pos: 1 }, + { type: "iden", symbol: "x", pos: 2 }, + { type: "eof", pos: 3 }, + ], + }, + { + input: "5 * x", + expected: [ + { type: "number", symbol: "5", pos: 0 }, + { type: "*", pos: 2 }, + { type: "iden", symbol: "x", pos: 4 }, + { type: "eof", pos: 5 }, + ], + }, + { + input: "(5 * 5 + 2) / 1.2 === 'foo'", + expected: [ + { type: "(", pos: 0 }, + { type: "number", symbol: "5", pos: 1 }, + { type: "*", pos: 3 }, + { type: "number", symbol: "5", pos: 5 }, + { type: "+", pos: 7 }, + { type: "number", symbol: "2", pos: 9 }, + { type: ")", pos: 10 }, + { type: "/", pos: 12 }, + { type: "number", symbol: "1.2", pos: 14 }, + { type: "===", pos: 18 }, + { type: "string", symbol: "'foo'", pos: 22 }, + { type: "eof", pos: 27 }, + ], + }, + { + input: "(() => {console.log('foo'); return 1;})()", + expected: [ + { type: "(", pos: 0 }, + { type: "(", pos: 1 }, + { type: ")", pos: 2 }, + { type: "invalid", pos: 4 }, + ], + }, + { + input: "(function() {console.log('foo'); return 1;})()", + expected: [ + { type: "(", pos: 0 }, + { type: "iden", symbol: "function", pos: 1 }, + { type: "(", pos: 9 }, + { type: ")", pos: 10 }, + { type: "{", pos: 12 }, + { type: "iden", symbol: "console", pos: 13 }, + { type: ".", pos: 20 }, + { type: "iden", symbol: "log", pos: 21 }, + { type: "(", pos: 24 }, + { type: "string", symbol: "'foo'", pos: 25 }, + { type: ")", pos: 30 }, + { type: "invalid", pos: 31 }, + ], + }, + { + input: "'ranged' === 'ranged'", + expected: [ + { type: "string", symbol: "'ranged'", pos: 0 }, + { type: "===", pos: 9 }, + { type: "string", symbol: "'ranged'", pos: 13 }, + { type: "eof", pos: 21 }, + ], + }, + ]; + + it.each([ + ...singleOperatorTestCases, + ...singleNumberTestCases, + ...invalidNumberTestCases, + ...singleIdentifierTestCases, + ...invalidIdentifierTestCases, + ...singleStringTestCases, + ...invalidStringTestCases, + ...whiteSpaceTestCases, + ...complicatedTermTestCases, + ])("lexes $input correctly", ({ input, expected }) => { + // when + const result = consume(new Lexer(input)); + + // then + expect(result).toEqual(expected); + }); +}); + +function consume(iterable: Iterable): T[] { + const result: T[] = []; + for (const value of iterable) { + result.push(value); + } + return result; +} diff --git a/spec/expression-evaluation/validator.spec.ts b/spec/expression-evaluation/validator.spec.ts new file mode 100644 index 00000000..52d556d7 --- /dev/null +++ b/spec/expression-evaluation/validator.spec.ts @@ -0,0 +1,125 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import { literals, safeOperators } from "../../src/expression-evaluation/grammar"; +import { Validator } from "../../src/expression-evaluation/validator"; + +describe("Validator", () => { + it("allows identifier according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "true"; + const validator = new Validator(predicate); + const input = "true"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("disallows identifier according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "false"; + const validator = new Validator(predicate); + const input = "true"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'true' is not an allowed identifier"); + }); + + it("allows multiple identifiers according to the given predicate", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true null"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("allows multiple identifiers in a more complex expression according to the given rule", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true === null"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("mentions the first not allowed identifier in the thrown errror", () => { + // given + const predicate = (identifier: string) => identifier === "true" || identifier === "null"; + const validator = new Validator(predicate); + const input = "true === null && undefined === false"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'undefined' is not an allowed identifier."); + }); + + it("disallows invalid invalid tokens", () => { + // given + const validator = new Validator(); + const input = ";"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("Invalid or unexpected token (0)"); + }); + + it("allows a complicated valid expression", () => { + // given + const predicate = (identifier: string) => [...safeOperators, ...literals, "floor", "random"].includes(identifier); + const validator = new Validator(predicate); + const input = "typeof (floor(random() * 5) / 2) === 'number' ? 42 : 'foo'"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).not.toThrow(); + }); + + it("disallows a complicated expression if it contains a disallowed identifier", () => { + // given + const predicate = (identifier: string) => [...safeOperators, ...literals, "ceil"].includes(identifier); + const validator = new Validator(predicate); + const input = "ceil.constructor('alert(1); return 1;')()"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("'constructor' is not an allowed identifier."); + }); + + it("disallows arrow functions", () => { + // given + const validator = new Validator(); + const input = "() => {}"; + + // when + const validate = () => validator.validate(input); + + // then + expect(validate).toThrowError("Invalid or unexpected token (3)"); + }); +}); diff --git a/spec/localization/localization.spec.ts b/spec/localization/localization.spec.ts new file mode 100644 index 00000000..dd733db1 --- /dev/null +++ b/spec/localization/localization.spec.ts @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { describe, expect, it } from "vitest"; + +import de from "../../lang/de.json"; +import en from "../../lang/en.json"; + +describe("English and german localization files", () => { + it("should have the same keys.", () => { + const deKeys = Object.keys(de); + const enKeys = Object.keys(en); + expect(deKeys).toEqual(enKeys); + }); +}); diff --git a/spec/setup.ts b/spec/setup.ts new file mode 100644 index 00000000..5bb4e4bb --- /dev/null +++ b/spec/setup.ts @@ -0,0 +1,57 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import en from "../lang/en.json"; + +function setupPrimitives() { + Object.defineProperties(Number, { + isNumeric: { + value: function (n: unknown) { + if (n instanceof Array) return false; + else if (([null, ""] as unknown[]).includes(n)) return false; + // @ts-expect-error Abusing JavaScript a bit here, but it's the implementation from foundry + return +n === +n; + }, + }, + fromString: { + value: function (str: unknown) { + if (typeof str !== "string" || !str.length) return NaN; + // Remove whitespace. + str = str.replace(/\s+/g, ""); + return Number(str); + }, + }, + }); + + Object.defineProperties(Math, { + clamped: { + value: function (num: number, min: number, max: number) { + return Math.min(max, Math.max(num, min)); + }, + }, + }); +} + +function setupStubs() { + class StubGame { + constructor() { + this.i18n = { + localize: (key: string) => (key in en ? en[key as keyof typeof en] : key), + }; + } + i18n: { + localize: (key: string) => string; + }; + } + + const game = new StubGame(); + + Object.defineProperties(globalThis, { + game: { value: game }, + Game: { value: StubGame }, + }); +} + +setupPrimitives(); +setupStubs(); diff --git a/spec/support/ds4rolls/executor.spec.ts b/spec/support/ds4rolls/executor.spec.ts deleted file mode 100644 index 58997a98..00000000 --- a/spec/support/ds4rolls/executor.spec.ts +++ /dev/null @@ -1,246 +0,0 @@ -import { rollCheckMultipleDice, rollCheckSingleDie } from "../../../src/module/rolls/roll-executor"; - -import "jasmine"; -import { RollResult, RollResultStatus } from "../../../src/module/rolls/roll-data"; - -describe("DS4 Rolls with one die and no modifications.", () => { - it("Should do a regular success roll.", () => { - expect(rollCheckSingleDie(12, {}, [4])).toEqual(new RollResult(4, RollResultStatus.SUCCESS, [4], true)); - }); - - it("Should do a single success roll on success upper edge case.", () => { - expect(rollCheckSingleDie(4, {}, [4])).toEqual(new RollResult(4, RollResultStatus.SUCCESS, [4], true)); - }); - - it("Should do a single failure roll on lower edge case.", () => { - expect(rollCheckSingleDie(4, {}, [5])).toEqual(new RollResult(0, RollResultStatus.FAILURE, [5], true)); - }); - - it("Should do a single failure roll on upper edge case '19'.", () => { - expect(rollCheckSingleDie(4, {}, [19])).toEqual(new RollResult(0, RollResultStatus.FAILURE, [19])); - }); - - it("Should do a single crit success roll on '1'.", () => { - expect(rollCheckSingleDie(4, {}, [1])).toEqual(new RollResult(4, RollResultStatus.CRITICAL_SUCCESS, [1], true)); - }); - - it("Should do a single crit failure roll on '20'.", () => { - expect(rollCheckSingleDie(4, {}, [20])).toEqual(new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20])); - }); -}); - -describe("DS4 Rolls with one die and slaying dice, first throw.", () => { - it("Should do a crit success on `1`", () => { - expect(rollCheckSingleDie(4, { useSlayingDice: true }, [1])).toEqual( - new RollResult(4, RollResultStatus.CRITICAL_SUCCESS, [1]), - ); - }); - - it("Should do a crit fail on `20`", () => { - expect(rollCheckSingleDie(4, { useSlayingDice: true }, [20])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20]), - ); - }); -}); - -describe("DS4 Rolls with one die and slaying dice, followup throw.", () => { - it("Should do a crit success on `1`", () => { - expect(rollCheckSingleDie(4, { useSlayingDice: true, slayingDiceRepetition: true }, [1])).toEqual( - new RollResult(4, RollResultStatus.CRITICAL_SUCCESS, [1]), - ); - }); - - it("Should do a regular fail on `20`", () => { - expect(rollCheckSingleDie(4, { useSlayingDice: true, slayingDiceRepetition: true }, [20])).toEqual( - new RollResult(0, RollResultStatus.FAILURE, [20]), - ); - }); - - it("Should do a regular success on `20` with a CTN of 20", () => { - expect(rollCheckSingleDie(20, { useSlayingDice: true, slayingDiceRepetition: true }, [20])).toEqual( - new RollResult(20, RollResultStatus.SUCCESS, [20]), - ); - }); -}); - -describe("DS4 Rolls with one die and crit roll modifications.", () => { - it("Should do a crit success on `1`.", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [1])).toEqual( - new RollResult(4, RollResultStatus.CRITICAL_SUCCESS, [1]), - ); - }); - - it("Should do a crit success on `maxCritSucc`.", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [2])).toEqual( - new RollResult(4, RollResultStatus.CRITICAL_SUCCESS, [2]), - ); - }); - - it("Should do a success on lower edge case `3`.", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [3])).toEqual( - new RollResult(3, RollResultStatus.SUCCESS, [3]), - ); - }); - - it("Should do a success on upper edge case `18`.", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [18])).toEqual( - new RollResult(0, RollResultStatus.FAILURE, [18]), - ); - }); - - it("Should do a crit fail on `minCritFailure`.", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [19])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [19]), - ); - }); - - it("Should do a crit fail on `20`", () => { - expect(rollCheckSingleDie(4, { maxCritSuccess: 2, minCritFailure: 19 }, [20])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20]), - ); - }); -}); - -describe("DS4 Rolls with multiple dice and no modifiers.", () => { - it("Should do a crit fail on `20` for first roll.", () => { - expect(rollCheckMultipleDice(48, {}, [20, 15, 6])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20, 15, 6]), - ); - }); - - it("Should succeed normally with all rolls crit successes.", () => { - expect(rollCheckMultipleDice(48, {}, [1, 1, 1])).toEqual( - new RollResult(48, RollResultStatus.CRITICAL_SUCCESS, [1, 1, 1]), - ); - }); - - it("Should succeed with the last roll not being suficient.", () => { - expect(rollCheckMultipleDice(48, {}, [15, 15, 15])).toEqual( - new RollResult(30, RollResultStatus.SUCCESS, [15, 15, 15]), - ); - }); - - it("Should succeed with the last roll a crit success.", () => { - expect(rollCheckMultipleDice(48, {}, [15, 15, 1])).toEqual( - new RollResult(38, RollResultStatus.SUCCESS, [15, 15, 1]), - ); - }); - - it("Should succeed with the last roll being 20 and one crit success.", () => { - expect(rollCheckMultipleDice(48, {}, [15, 1, 20])).toEqual( - new RollResult(43, RollResultStatus.SUCCESS, [15, 1, 20]), - ); - }); - - it("Should properly maximize throw result with all dice success.", () => { - expect(rollCheckMultipleDice(46, {}, [15, 4, 12])).toEqual( - new RollResult(31, RollResultStatus.SUCCESS, [15, 4, 12]), - ); - }); - - it("Should properly maximize throw result with one dice a failure.", () => { - expect(rollCheckMultipleDice(46, {}, [15, 8, 20])).toEqual( - new RollResult(35, RollResultStatus.SUCCESS, [15, 8, 20]), - ); - }); - - it("Should maximize on 'lowest dice higher than last CTN and crit success thrown'-Edge case, no change required.", () => { - expect(rollCheckMultipleDice(46, {}, [15, 1, 8])).toEqual( - new RollResult(35, RollResultStatus.SUCCESS, [15, 1, 8]), - ); - }); - - it("Should maximize on 2-dice 'lowest dice higher than last CTN and crit success thrown'-Edge case, no change required.", () => { - expect(rollCheckMultipleDice(24, {}, [1, 8])).toEqual( - new RollResult(20, RollResultStatus.CRITICAL_SUCCESS, [1, 8]), - ); - }); - - it("Should maximize on 2-dice 'lowest dice higher than last CTN and crit success thrown'-Edge case, change required.", () => { - expect(rollCheckMultipleDice(38, {}, [1, 19])).toEqual( - new RollResult(37, RollResultStatus.CRITICAL_SUCCESS, [1, 19]), - ); - }); - - it("Should maximize correctly when swapping with more than one crit success", () => { - expect(rollCheckMultipleDice(48, {}, [1, 1, 15])).toEqual( - new RollResult(43, RollResultStatus.CRITICAL_SUCCESS, [1, 1, 15]), - ); - }); -}); - -describe("DS4 Rolls with multiple dice and min/max modifiers.", () => { - it("Should do a crit fail on `19` for first roll.", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [19, 15, 6])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [19, 15, 6]), - ); - }); - - it("Should succeed with all rolls crit successes (1 and 2).", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [2, 1, 2])).toEqual( - new RollResult(48, RollResultStatus.CRITICAL_SUCCESS, [2, 1, 2]), - ); - }); - - it("Should succeed with the last roll not being sufficient.", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [15, 15, 15])).toEqual( - new RollResult(30, RollResultStatus.SUCCESS, [15, 15, 15]), - ); - }); - - it("Should succeed with the last roll a crit success `2`.", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [15, 15, 2])).toEqual( - new RollResult(38, RollResultStatus.SUCCESS, [15, 15, 2]), - ); - }); - - it("Should succeed with the last roll being `20` and one crit success '2'.", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [15, 2, 20])).toEqual( - new RollResult(43, RollResultStatus.SUCCESS, [15, 2, 20]), - ); - }); - - it("Should succeed with the last roll being `19` and one crit success '2'.", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2, minCritFailure: 19 }, [15, 2, 19])).toEqual( - new RollResult(42, RollResultStatus.SUCCESS, [15, 2, 19]), - ); - }); -}); - -describe("DS4 Rolls with multiple dice and fail modifiers.", () => { - it("Should do a crit fail on `19` for first roll.", () => { - expect(rollCheckMultipleDice(48, { minCritFailure: 19 }, [19, 15, 6])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [19, 15, 6]), - ); - }); -}); - -describe("DS4 Rolls with multiple dice and success modifiers.", () => { - it("Should succeed with all rolls crit successes (1 and 2).", () => { - expect(rollCheckMultipleDice(48, { maxCritSuccess: 2 }, [2, 1, 2])).toEqual( - new RollResult(48, RollResultStatus.CRITICAL_SUCCESS, [2, 1, 2]), - ); - }); -}); - -describe("DS4 Rolls with multiple and slaying dice, first throw", () => { - it("Should fail with the first roll being a `20`", () => { - expect(rollCheckMultipleDice(48, { useSlayingDice: true }, [20, 2, 19])).toEqual( - new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20, 2, 19], true), - ); - }); - - it("Should issue a critical success, even with resorting dice", () => { - expect(rollCheckMultipleDice(48, { useSlayingDice: true, maxCritSuccess: 2 }, [2, 19, 15])).toEqual( - new RollResult(42, RollResultStatus.CRITICAL_SUCCESS, [2, 19, 15]), - ); - }); -}); - -describe("DS4 Rolls with multiple and slaying dice, recurrent throw", () => { - it("Should regularly succeed with the first roll being a `20`", () => { - expect(rollCheckMultipleDice(48, { useSlayingDice: true, slayingDiceRepetition: true }, [20, 2, 19])).toEqual( - new RollResult(41, RollResultStatus.SUCCESS, [20, 2, 19]), - ); - }); -}); diff --git a/spec/support/ds4rolls/utils.spec.ts b/spec/support/ds4rolls/utils.spec.ts deleted file mode 100644 index 3d88e5d2..00000000 --- a/spec/support/ds4rolls/utils.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import "jasmine"; -import { isDiceSwapNecessary } from "../../../src/module/rolls/roll-utils"; - -describe("Utility function testing if dice swap is necessary", () => { - it("Should not swap if all dice are crit successes.", () => { - expect(isDiceSwapNecessary([[1, 1, 1], []], 9)).toBeFalse(); - }); - - it("Should not swap if no die is crit success.", () => { - expect(isDiceSwapNecessary([[], [2, 2, 2]], 9)).toBeFalse(); - }); - - it("Should not swap if all dice are already in use", () => { - expect(isDiceSwapNecessary([[1], [9, 8]], 10)).toBeFalse(); - }); - - it("Should not swap if result does not get any better", () => { - expect(isDiceSwapNecessary([[1], [8]], 4)).toBeFalse(); - }); - - it("Should swap if result does get better", () => { - expect(isDiceSwapNecessary([[1], [19]], 18)).toBeTrue(); - }); -}); diff --git a/spec/support/jasmine.json b/spec/support/jasmine.json deleted file mode 100644 index 6d97768a..00000000 --- a/spec/support/jasmine.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "spec_dir": "spec", - "spec_files": ["**/*[sS]pec.ts"], - "helpers": ["helpers/**/*.ts"], - "stopSpecOnExpectationFailure": false, - "random": true -} diff --git a/spec/support/localization/localization.spec.ts b/spec/support/localization/localization.spec.ts deleted file mode 100644 index b289819c..00000000 --- a/spec/support/localization/localization.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import "jasmine"; -import * as fs from "fs-extra"; -import * as path from "path"; - -describe("English and german localization files", () => { - const localizationPath = "./src/lang/"; - const en: Record = fs.readJSONSync(path.join(localizationPath, "en.json")); - const de: Record = fs.readJSONSync(path.join(localizationPath, "de.json")); - - it("should have the same keys.", () => { - const deKeys = Object.keys(de); - const enKeys = Object.keys(en); - expect(deKeys).toEqual(enKeys); - }); -}); diff --git a/spec/tsconfig.json b/spec/tsconfig.json new file mode 100644 index 00000000..9e7018a5 --- /dev/null +++ b/spec/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.json", + "include": ["../src", "./"] +} diff --git a/spec/tsconfig.json.license b/spec/tsconfig.json.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/spec/tsconfig.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/src/apps/active-effect-config.js b/src/apps/active-effect-config.js new file mode 100644 index 00000000..e0acae02 --- /dev/null +++ b/src/apps/active-effect-config.js @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export class DS4ActiveEffectConfig extends ActiveEffectConfig { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + template: "systems/ds4/templates/sheets/active-effect/active-effect-config.hbs", + }); + } + + /** + * @override + * @param {JQuery} html + */ + activateListeners(html) { + super.activateListeners(html); + const checkbox = html[0]?.querySelector('input[name="flags.ds4.itemEffectConfig.applyToItems"]'); + checkbox?.addEventListener("change", () => this.#toggleItemEffectConfig(checkbox.checked)); + } + + /** + * Toggle the visibility of the item effect config section + * @param {boolean} active The target state + */ + #toggleItemEffectConfig(active) { + const elements = this.element[0]?.querySelectorAll(".ds4-item-effect-config"); + elements?.forEach((element) => { + if (active) { + element.classList.remove("ds4-hidden"); + } else { + element.classList.add("ds4-hidden"); + } + }); + this.setPosition({ height: "auto" }); + } +} diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js new file mode 100644 index 00000000..75a74b11 --- /dev/null +++ b/src/apps/actor/base-sheet.js @@ -0,0 +1,496 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; +import { DS4ActiveEffect } from "../../documents/active-effect"; +import { isCheck } from "../../documents/actor/actor-data-properties-base"; +import { getDS4Settings } from "../../settings"; +import { notifications } from "../../ui/notifications"; +import { enforce, getCanvas, getGame } from "../../utils/utils"; +import { disableOverriddenFields } from "../sheet-helpers"; + +/** + * The base sheet class for all {@link DS4Actor}s. + */ +export class DS4ActorSheet extends ActorSheet { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet"], + height: 645, + scrollY: [".ds4-sheet-body"], + tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "values" }], + dragDrop: [ + { dragSelector: ".item-list .item", dropSelector: null }, + { dragSelector: ".effect-list .effect", dropSelector: null }, + { dragSelector: ".ds4-check", dropSelector: null }, + ], + width: 650, + }); + } + + /** @override */ + get template() { + const basePath = "systems/ds4/templates/sheets/actor"; + if (!getGame().user?.isGM && this.actor.limited) return `${basePath}/limited-sheet.hbs`; + return `${basePath}/${this.actor.type}-sheet.hbs`; + } + + /** @override */ + async getData(options = {}) { + const itemsByType = Object.fromEntries( + Object.entries(this.actor.itemTypes).map(([itemType, items]) => { + return [itemType, [...items].sort((a, b) => (a.sort || 0) - (b.sort || 0))]; + }), + ); + + const enrichedEffects = [...this.actor.allApplicableEffects()].map((effect) => { + return { + ...effect.toObject(), + sourceName: effect.parent instanceof Item ? effect.parent.name : effect.sourceName, + factor: effect.factor, + active: effect.active, + uuid: effect.uuid, + }; + }); + + const context = { + ...this.addTooltipsToData(await super.getData(options)), + config: DS4, + itemsByType, + enrichedEffects, + settings: getDS4Settings(), + }; + return context; + } + + /** + * Adds tooltips to the attributes, traits, and combatValues of the given context object. + * @param {object} context + * @protected + */ + addTooltipsToData(context) { + const valueGroups = [context.data.system.attributes, context.data.system.traits, context.data.system.combatValues]; + + valueGroups.forEach((valueGroup) => { + Object.values(valueGroup).forEach((attribute) => { + attribute.tooltip = this.getTooltipForValue(attribute); + }); + }); + return context; + } + + /** + * Generates a tooltip for a given attribute, trait, or combatValue. + * @param {import("../../documents/common/common-data").ModifiableDataBaseTotal} value The value to get a tooltip for + * @returns {string} The tooltip + * @protected + */ + getTooltipForValue(value) { + return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${ + value.mod + } (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${ + value.total + }`; + } + + /** + * @param {JQuery} html + * @override + */ + activateListeners(html) { + super.activateListeners(html); + + if (!this.options.editable) return; + + html.find(".control-item").on("click", this.onControlItem.bind(this)); + html.find(".change-item").on("change", this.onChangeItem.bind(this)); + + html.find(".control-effect").on("click", this.onControlEffect.bind(this)); + html.find(".change-effect").on("change", this.onChangeEffect.bind(this)); + + html.find(".rollable-item").on("click", this.onRollItem.bind(this)); + html.find(".rollable-check").on("click", this.onRollCheck.bind(this)); + + html.find(".sort-items").on("click", this.onSortItems.bind(this)); + + disableOverriddenFields(this.form, this.actor.overrides, (key) => `[name="${key}"]`); + for (const item of this.actor.items) { + disableOverriddenFields( + this.form, + item.overrides, + (key) => `[data-item-uuid="${item.uuid}"] .change-item[data-property="${key}"]`, + ); + } + } + + /** + * Handles a click on an element of this sheet to control an embedded item of the actor corresponding to this sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlItem(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateItem(event); + case "edit": + return this.onEditItem(event); + case "delete": + return this.onDeleteItem(event); + } + } + + /** + * Creates a new embedded item using the initial data defined in the HTML dataset of the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onCreateItem(event) { + const { type } = foundry.utils.deepClone(event.currentTarget.dataset); + const name = getGame().i18n.localize(`DS4.New${type.capitalize()}Name`); + const itemData = { name, type }; + Item.create(itemData, { parent: this.actor }); + } + + /** + * Opens the sheet of the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onEditItem(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onDeleteItem(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.delete(); + $(li).slideUp(200, () => this.render(false)); + } + + /** + * Applies a change to a property of an embedded item depending on the `data-property` attribute of the + * {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onChangeItem(event) { + return this.onChangeEmbeddedDocument(event, "Item"); + } + + /** + * Handles a click on an element of this sheet to control an embedded effect of the actor corresponding to this + * sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlEffect(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateEffect(); + case "edit": + return this.onEditEffect(event); + case "delete": + return this.onDeleteEffect(event); + } + } + + /** + * Creates a new embedded effect. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onCreateEffect() { + DS4ActiveEffect.createDefault(this.actor); + } + + /** + * Opens the sheet of the embedded effect corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onEditEffect(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; + const effect = await fromUuid(uuid); + enforce( + effect && (effect.parent === this.actor || effect.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + effect.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onDeleteEffect(event) { + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; + const effect = await fromUuid(uuid); + enforce( + effect && (effect.parent === this.actor || effect.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + effect.delete(); + $(li).slideUp(200, () => this.render(false)); + } + + /** + * Applies a change to a property of an embedded effect depending on the `data-property` attribute of the + * {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onChangeEffect(event) { + return this.onChangeEmbeddedDocument(event, "ActiveEffect"); + } + + /** + * Applies a change to a property of an embedded document of the actor belonging to this sheet. The change depends + * on the `data-property` attribute of the {@link HTMLInputElement} that has been changed and its new value. + * + * @param {JQuery.ChangeEvent} event The originating click event + * @param {"Item" | "ActiveEffect"} documentName The name of the embedded document to be changed. + * @protected + */ + async onChangeEmbeddedDocument(event, documentName) { + event.preventDefault(); + const element = $(event.currentTarget).get(0); + if (element.disabled) return; + + const documentElement = element.closest(embeddedDocumentListEntryProperties[documentName].selector); + const uuid = documentElement.dataset[embeddedDocumentListEntryProperties[documentName].uuidDataAttribute]; + const property = element.dataset["property"]; + enforce(property !== undefined, TypeError("HTML element does not provide 'data-property' attribute")); + + const newValue = this.parseValue(element); + + const document = await fromUuid(uuid); + + if (documentName === "Item") { + enforce( + document && document.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + } else { + enforce( + document && (document.parent === this.actor || document.parent.parent === this.actor), + getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), + ); + } + document.update({ [property]: newValue }); + } + + /** + * Parses the value of the given {@link HTMLInputElement} depending on the element's type + * The value is parsed to: + * - checkbox: `boolean`, if the attribute `data-inverted` is set to a truthy value, the parsed value is inverted + * - text input: `string` + * - number: `number` + * + * @param {HTMLInputElement} element The input element to parse the value from + * @returns {boolean | string | number} The parsed data + * @protected + */ + parseValue(element) { + switch (element.type) { + case "checkbox": { + const inverted = Boolean(element.dataset["inverted"]); + const value = element.checked; + return inverted ? !value : value; + } + case "text": { + const value = element.value; + return value; + } + case "number": { + const value = Number(element.value.trim()); + return value; + } + default: { + throw new TypeError("Binding of item property to this type of HTML element not supported; given: " + element); + } + } + } + + /** + * Handle clickable item rolls. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + async onRollItem(event) { + event.preventDefault(); + const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); + const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; + const item = await fromUuid(uuid); + enforce( + item && item.parent === this.actor, + getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), + ); + item.roll().catch((e) => notifications.error(e, { log: true })); + } + + /** + * Handle clickable check rolls. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onRollCheck(event) { + event.preventDefault(); + event.currentTarget.blur(); + const check = event.currentTarget.dataset["check"]; + this.actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); + } + + /** + * @param {DragEvent} event + * @override + */ + _onDragStart(event) { + const target = event.currentTarget; + if (!(target instanceof HTMLElement)) return super._onDragStart(event); + + const check = target.dataset.check; + if (!check) return super._onDragStart(event); + + enforce(isCheck(check), getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); + + const dragData = { + actorId: this.actor.id, + sceneId: this.actor.isToken ? getCanvas().scene?.id : null, + tokenId: this.actor.isToken ? this.actor.token?.id : null, + type: "Check", + data: check, + }; + + event.dataTransfer?.setData("text/plain", JSON.stringify(dragData)); + } + + /** + * Sort items according to the item list header that has been clicked. + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onSortItems(event) { + event.preventDefault(); + const target = event.currentTarget; + const type = target.parentElement?.dataset["type"]; + enforce(type !== undefined, `Could not find property 'type' in the dataset of the parent of ${target}`); + const dataPath = target.dataset["dataPath"]; + enforce(dataPath !== undefined, `Could not find property 'dataPath' in the dataset of ${target}`); + const dataPath2 = target.dataset["dataPath2"]; + /** @type {import("../../documents/item/item").DS4Item[]}*/ + const items = this.actor.items.filter((item) => item.type === type); + items.sort((a, b) => a.sort - b.sort); + + /** + * @param {boolean} invert Whether or not to inverse the sort order + * @returns {(a: import("../../documents/item/item").DS4Item, b: import("../../documents/item/item").DS4Item) => number} A function for sorting items + */ + const sortFunction = (invert) => (a, b) => { + const propertyA = getProperty(a, dataPath); + const propertyB = getProperty(b, dataPath); + const comparison = + typeof propertyA === "string" || typeof propertyB === "string" + ? compareAsStrings(propertyA, propertyB, invert) + : compareAsNumbers(propertyA, propertyB, invert); + + if (comparison === 0 && dataPath2 !== undefined) { + const propertyA = getProperty(a, dataPath); + const propertyB = getProperty(b, dataPath); + return typeof propertyA === "string" || typeof propertyB === "string" + ? compareAsStrings(propertyA, propertyB, invert) + : compareAsNumbers(propertyA, propertyB, invert); + } + + return comparison; + }; + + const sortedItems = [...items].sort(sortFunction(false)); + const wasSortedAlready = !sortedItems.find((item, index) => item !== items[index]); + + if (wasSortedAlready) { + sortedItems.sort(sortFunction(true)); + } + + const updates = sortedItems.map((item, i) => ({ + _id: item.id, + sort: (i + 1) * CONST.SORT_INTEGER_DENSITY, + })); + + this.actor.updateEmbeddedDocuments("Item", updates); + } +} + +/** + * This object contains information about specific properties embedded document list entries for each different type. + */ +const embeddedDocumentListEntryProperties = Object.freeze({ + ActiveEffect: { + selector: ".effect", + uuidDataAttribute: "effectUuid", + }, + Item: { + selector: ".item", + uuidDataAttribute: "itemUuid", + }, +}); + +/** + * Compare two stringifiables as strings. + * @param {{ toString(): string }} a The thing to compare with + * @param {{ toString(): string }} b The thing to compare + * @param {boolean} invert Should the comparison be inverted? + * @return {number} A number that indicates the result of the comparison + */ +const compareAsStrings = (a, b, invert) => { + return invert ? b.toString().localeCompare(a.toString()) : a.toString().localeCompare(b.toString()); +}; + +/** + * Compare two number. + * @param {number} a The number to compare with + * @param {number} b The number to compare + * @param {boolean} invert Should the comparison be inverted? + * @return {number} A number that indicates the result of the comparison + */ +const compareAsNumbers = (a, b, invert) => { + return invert ? b - a : a - b; +}; diff --git a/src/apps/actor/character-sheet.js b/src/apps/actor/character-sheet.js new file mode 100644 index 00000000..368fe176 --- /dev/null +++ b/src/apps/actor/character-sheet.js @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4ActorSheet } from "./base-sheet"; + +/** + * The Sheet class for DS4 Character Actors + */ +export class DS4CharacterActorSheet extends DS4ActorSheet { + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet", "ds4-character-sheet"], + }); + } + + /** @override */ + async getData(options = {}) { + const context = await super.getData(options); + context.data.system.profile.biography = await TextEditor.enrichHTML(context.data.system.profile.biography, { + async: true, + }); + return context; + } +} diff --git a/src/apps/actor/creature-sheet.js b/src/apps/actor/creature-sheet.js new file mode 100644 index 00000000..fe89dec0 --- /dev/null +++ b/src/apps/actor/creature-sheet.js @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4ActorSheet } from "./base-sheet"; + +/** + * The Sheet class for DS4 Creature Actors + */ +export class DS4CreatureActorSheet extends DS4ActorSheet { + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-actor-sheet", "ds4-creature-sheet"], + }); + } + + /** @override */ + async getData(options = {}) { + const context = await super.getData(options); + context.data.system.baseInfo.description = await TextEditor.enrichHTML(context.data.system.baseInfo.description, { + async: true, + }); + return context; + } +} diff --git a/src/apps/dialog-with-listeners.js b/src/apps/dialog-with-listeners.js new file mode 100644 index 00000000..c9a3f2a2 --- /dev/null +++ b/src/apps/dialog-with-listeners.js @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @typedef {DialogOptions} DialogWithListenersOptions + * @property {(html: JQuery, app: DialogWithListeners) => void} [activateAdditionalListeners] An optional function to attach additional listeners to the dialog + */ + +/** + * A simple extension to the {@link Dialog} class that allows attaching additional listeners. + */ +export class DialogWithListeners extends Dialog { + /** @override */ + activateListeners(html) { + super.activateListeners(html); + if (this.options.activateAdditionalListeners !== undefined) { + this.options.activateAdditionalListeners(html, this); + } + } +} diff --git a/src/apps/item-sheet.js b/src/apps/item-sheet.js new file mode 100644 index 00000000..1fc6f0aa --- /dev/null +++ b/src/apps/item-sheet.js @@ -0,0 +1,150 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { DS4ActiveEffect } from "../documents/active-effect"; +import { enforce, getGame } from "../utils/utils"; +import { disableOverriddenFields } from "./sheet-helpers"; + +/** + * The Sheet class for DS4 Items + */ +export class DS4ItemSheet extends ItemSheet { + /** @override */ + static get defaultOptions() { + return foundry.utils.mergeObject(super.defaultOptions, { + classes: ["sheet", "ds4-item-sheet"], + height: 400, + scrollY: [".ds4-sheet-body"], + tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "description" }], + width: 540, + }); + } + + /** @override */ + get template() { + const basePath = "systems/ds4/templates/sheets/item"; + return `${basePath}/${this.item.type}-sheet.hbs`; + } + + /** @override */ + async getData(options = {}) { + const superContext = await super.getData(options); + superContext.data.system.description = await TextEditor.enrichHTML(superContext.data.system.description, { + async: true, + }); + const context = { + ...superContext, + config: DS4, + isOwned: this.item.isOwned, + actor: this.item.actor, + }; + return context; + } + + /** @override */ + _getSubmitData(updateData = {}) { + const data = super._getSubmitData(updateData); + // Prevent submitting overridden values + const overrides = foundry.utils.flattenObject(this.item.overrides); + for (const k of Object.keys(overrides)) { + delete data[k]; + } + return data; + } + + /** @override */ + setPosition(options = {}) { + const position = super.setPosition(options); + if (position) { + const sheetBody = this.element.find(".sheet-body"); + const bodyHeight = position.height - 192; + sheetBody.css("height", bodyHeight); + } + + return position; + } + + /** + * @override + * @param {JQuery} html + */ + activateListeners(html) { + super.activateListeners(html); + + if (!this.options.editable) return; + + html.find(".control-effect").on("click", this.onControlEffect.bind(this)); + + disableOverriddenFields(this.form, this.item.overrides, (key) => `[name="${key}"]`); + } + + /** + * Handles a click on an element of this sheet to control an embedded effect of the item corresponding to this + * sheet. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onControlEffect(event) { + event.preventDefault(); + const a = event.currentTarget; + switch (a.dataset["action"]) { + case "create": + return this.onCreateEffect(); + case "edit": + return this.onEditEffect(event); + case "delete": + return this.onDeleteEffect(event); + } + } + + /** + * Creates a new embedded effect. + * @protected + */ + onCreateEffect() { + DS4ActiveEffect.createDefault(this.item); + } + + /** + * Opens the sheet of the embedded effect corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @porotected + */ + onEditEffect(event) { + const id = $(event.currentTarget) + .parents(embeddedDocumentListEntryProperties.ActiveEffect.selector) + .data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); + const effect = this.item.effects.get(id); + enforce(effect, getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); + effect.sheet?.render(true); + } + + /** + * Deletes the embedded item corresponding to the clicked element. + * + * @param {JQuery.ClickEvent} event The originating click event + * @protected + */ + onDeleteEffect(event) { + const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.ActiveEffect.selector); + const id = li.data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); + this.item.deleteEmbeddedDocuments("ActiveEffect", [id]); + li.slideUp(200, () => this.render(false)); + } +} + +/** + * This object contains information about specific properties embedded document list entries for each different type. + */ +const embeddedDocumentListEntryProperties = Object.freeze({ + ActiveEffect: { + selector: ".effect", + idDataAttribute: "effectId", + }, +}); diff --git a/src/apps/sheet-helpers.js b/src/apps/sheet-helpers.js new file mode 100644 index 00000000..0a4ef162 --- /dev/null +++ b/src/apps/sheet-helpers.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +/** + * Disable elements in the given form that match the selector returned for overridden properties. + * @param {HTMLElement | null} form The form in which to disable fields + * @param {Record} overrides The set of overrides of the underlying document + * @param {(key: string) => string} selector A function that generates a selector, based on a property key + */ +export function disableOverriddenFields(form, overrides, selector) { + const inputs = ["INPUT", "SELECT", "TEXTAREA", "BUTTON"]; + const titleAddition = `(${getGame().i18n.localize("DS4.TooltipNotEditableDueToEffects")})`; + + for (const key of Object.keys(foundry.utils.flattenObject(overrides))) { + const elements = form?.querySelectorAll(selector(key)); + elements?.forEach((element) => { + if (inputs.includes(element.tagName) && !element.hasAttribute("disabled")) { + element.setAttribute("disabled", ""); + const title = element.getAttribute("title"); + const newTitle = title === null ? titleAddition : `${title} ${titleAddition}`; + element.setAttribute("title", newTitle); + } + }); + } +} diff --git a/src/assets/official/DS4-MSC.png b/src/assets/official/DS4-MSC.png deleted file mode 100644 index e13b19f5..00000000 Binary files a/src/assets/official/DS4-MSC.png and /dev/null differ diff --git a/src/assets/official/LICENSE b/src/assets/official/LICENSE deleted file mode 100644 index 46c81916..00000000 --- a/src/assets/official/LICENSE +++ /dev/null @@ -1,361 +0,0 @@ -Creative Commons Legal Code - -Attribution-NonCommercial-ShareAlike 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(g) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "License Elements" means the following high-level license attributes - as selected by Licensor and indicated in the title of this License: - Attribution, Noncommercial, ShareAlike. - e. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - f. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - g. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - h. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - i. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - j. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved, including but not limited to the -rights described in Section 4(e). - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(d), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(d), as requested. - b. You may Distribute or Publicly Perform an Adaptation only under: (i) - the terms of this License; (ii) a later version of this License with - the same License Elements as this License; (iii) a Creative Commons - jurisdiction license (either this or a later license version) that - contains the same License Elements as this License (e.g., - Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). - You must include a copy of, or the URI, for Applicable License with - every copy of each Adaptation You Distribute or Publicly Perform. You - may not offer or impose any terms on the Adaptation that restrict the - terms of the Applicable License or the ability of the recipient of the - Adaptation to exercise the rights granted to that recipient under the - terms of the Applicable License. You must keep intact all notices that - refer to the Applicable License and to the disclaimer of warranties - with every copy of the Work as included in the Adaptation You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Adaptation, You may not impose any effective technological - measures on the Adaptation that restrict the ability of a recipient of - the Adaptation from You to exercise the rights granted to that - recipient under the terms of the Applicable License. This Section 4(b) - applies to the Adaptation as incorporated in a Collection, but this - does not require the Collection apart from the Adaptation itself to be - made subject to the terms of the Applicable License. - c. You may not exercise any of the rights granted to You in Section 3 - above in any manner that is primarily intended for or directed toward - commercial advantage or private monetary compensation. The exchange of - the Work for other copyrighted works by means of digital file-sharing - or otherwise shall not be considered to be intended for or directed - toward commercial advantage or private monetary compensation, provided - there is no payment of any monetary compensation in con-nection with - the exchange of copyrighted works. - d. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and, (iv) consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4(d) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by - You of the rights granted under this License if Your exercise of - such rights is for a purpose or use which is otherwise than - noncommercial as permitted under Section 4(c) and otherwise waives - the right to collect royalties through any statutory or compulsory - licensing scheme; and, - iii. Voluntary License Schemes. The Licensor reserves the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License that is for a - purpose or use which is otherwise than noncommercial as permitted - under Section 4(c). - f. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE -FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS -AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE -WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, -ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT -DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED -WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at https://creativecommons.org/. - diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 00000000..ab6981df --- /dev/null +++ b/src/config.ts @@ -0,0 +1,464 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +const i18nKeys = { + /** + * Define the set of acttack types that can be performed with weapon items + */ + attackTypes: { + melee: "DS4.AttackTypeMelee", + ranged: "DS4.AttackTypeRanged", + meleeRanged: "DS4.AttackTypeMeleeRanged", + }, + + /** + * Define the set of item availabilties + */ + itemAvailabilities: { + unset: "DS4.ItemAvailabilityUnset", + hamlet: "DS4.ItemAvailabilityHamlet", + village: "DS4.ItemAvailabilityVilage", + city: "DS4.ItemAvailabilityCity", + elves: "DS4.ItemAvailabilityElves", + dwarves: "DS4.ItemAvailabilityDwarves", + nowhere: "DS4.ItemAvailabilityNowhere", + }, + + /** + * Define the set of item types + */ + itemTypes: { + weapon: "DS4.ItemTypeWeapon", + armor: "DS4.ItemTypeArmor", + shield: "DS4.ItemTypeShield", + spell: "DS4.ItemTypeSpell", + equipment: "DS4.ItemTypeEquipment", + loot: "DS4.ItemTypeLoot", + talent: "DS4.ItemTypeTalent", + racialAbility: "DS4.ItemTypeRacialAbility", + language: "DS4.ItemTypeLanguage", + alphabet: "DS4.ItemTypeAlphabet", + specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", + }, + + /** + * Define the set of armor types, a character may only wear one item of each at any given time + */ + armorTypes: { + body: "DS4.ArmorTypeBody", + helmet: "DS4.ArmorTypeHelmet", + vambrace: "DS4.ArmorTypeVambrace", + greaves: "DS4.ArmorTypeGreaves", + vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", + }, + + /** + * Define abbreviations for the armor types + */ + armorTypesAbbr: { + body: "DS4.ArmorTypeBodyAbbr", + helmet: "DS4.ArmorTypeHelmetAbbr", + vambrace: "DS4.ArmorTypeVambraceAbbr", + greaves: "DS4.ArmorTypeGreavesAbbr", + vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", + }, + + /** + * Define the set of armor materials, used to determine if a character may wear the armor without additional penalties + */ + armorMaterialTypes: { + cloth: "DS4.ArmorMaterialTypeCloth", + leather: "DS4.ArmorMaterialTypeLeather", + chain: "DS4.ArmorMaterialTypeChain", + plate: "DS4.ArmorMaterialTypePlate", + natural: "DS4.ArmorMaterialTypeNatural", + }, + + /** + * Define the abbreviations of armor materials + */ + armorMaterialTypesAbbr: { + cloth: "DS4.ArmorMaterialTypeClothAbbr", + leather: "DS4.ArmorMaterialTypeLeatherAbbr", + chain: "DS4.ArmorMaterialTypeChainAbbr", + plate: "DS4.ArmorMaterialTypePlateAbbr", + natural: "DS4.ArmorMaterialTypeNaturalAbbr", + }, + + spellTypes: { + spellcasting: "DS4.SpellTypeSpellcasting", + targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", + }, + + spellGroups: { + lightning: "DS4.SpellGroupLightning", + earth: "DS4.SpellGroupEarth", + water: "DS4.SpellGroupWater", + ice: "DS4.SpellGroupIce", + fire: "DS4.SpellGroupFire", + healing: "DS4.SpellGroupHealing", + light: "DS4.SpellGroupLight", + air: "DS4.SpellGroupAir", + transport: "DS4.SpellGroupTransport", + damage: "DS4.SpellGroupDamage", + shadow: "DS4.SpellGroupShadow", + protection: "DS4.SpellGroupProtection", + mindAffecting: "DS4.SpellGroupMindAffecting", + demonology: "DS4.SpellGroupDemonology", + necromancy: "DS4.SpellGroupNecromancy", + transmutation: "DS4.SpellGroupTransmutation", + area: "DS4.SpellGroupArea", + }, + + cooldownDurations: { + "0r": "DS4.CooldownDuration0R", + "1r": "DS4.CooldownDuration1R", + "2r": "DS4.CooldownDuration2R", + "5r": "DS4.CooldownDuration5R", + "10r": "DS4.CooldownDuration10R", + "100r": "DS4.CooldownDuration100R", + "1d": "DS4.CooldownDuration1D", + d20d: "DS4.CooldownDurationD20D", + }, + + /** + * Define the set of actor types + */ + actorTypes: { + character: "DS4.ActorTypeCharacter", + creature: "DS4.ActorTypeCreature", + }, + + /** + * Define the set of attributes an actor has + */ + attributes: { + body: "DS4.AttributeBody", + mobility: "DS4.AttributeMobility", + mind: "DS4.AttributeMind", + }, + + /** + * Define the set of traits an actor has + */ + traits: { + strength: "DS4.TraitStrength", + agility: "DS4.TraitAgility", + intellect: "DS4.TraitIntellect", + constitution: "DS4.TraitConstitution", + dexterity: "DS4.TraitDexterity", + aura: "DS4.TraitAura", + }, + + /** + * Define the set of combat values an actor has + */ + combatValues: { + hitPoints: "DS4.CombatValuesHitPoints", + defense: "DS4.CombatValuesDefense", + initiative: "DS4.CombatValuesInitiative", + movement: "DS4.CombatValuesMovement", + meleeAttack: "DS4.CombatValuesMeleeAttack", + rangedAttack: "DS4.CombatValuesRangedAttack", + spellcasting: "DS4.CombatValuesSpellcasting", + targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", + }, + + /** + * The what do display in the actor sheets for the combat value text (in some languages, abbreviations are necessary) + */ + combatValuesSheet: { + hitPoints: "DS4.CombatValuesHitPointsSheet", + defense: "DS4.CombatValuesDefenseSheet", + initiative: "DS4.CombatValuesInitiativeSheet", + movement: "DS4.CombatValuesMovementSheet", + meleeAttack: "DS4.CombatValuesMeleeAttackSheet", + rangedAttack: "DS4.CombatValuesRangedAttackSheet", + spellcasting: "DS4.CombatValuesSpellcastingSheet", + targetedSpellcasting: "DS4.CombatValuesTargetedSpellcastingSheet", + }, + + /** + * Define the base info of a character + */ + characterBaseInfo: { + race: "DS4.CharacterBaseInfoRace", + class: "DS4.CharacterBaseInfoClass", + heroClass: "DS4.CharacterBaseInfoHeroClass", + culture: "DS4.CharacterBaseInfoCulture", + }, + + /** + * Define the progression info of a character + */ + characterProgression: { + level: "DS4.CharacterProgressionLevel", + experiencePoints: "DS4.CharacterProgressionExperiencePoints", + talentPoints: "DS4.CharacterProgressionTalentPoints", + progressPoints: "DS4.CharacterProgressionProgressPoints", + }, + + /** + * Define the language info of a character + */ + characterLanguage: { + languages: "DS4.CharacterLanguageLanguages", + alphabets: "DS4.CharacterLanguageAlphabets", + }, + + /** + * Define the profile info of a character + */ + characterProfile: { + biography: "DS4.CharacterProfileBiography", + gender: "DS4.CharacterProfileGender", + birthday: "DS4.CharacterProfileBirthday", + birthplace: "DS4.CharacterProfileBirthplace", + age: "DS4.CharacterProfileAge", + height: "DS4.CharacterProfileHeight", + hairColor: "DS4.CharacterProfileHairColor", + weight: "DS4.CharacterProfileWeight", + eyeColor: "DS4.CharacterProfileEyeColor", + specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", + }, + /** + * Define currency elements of a character + */ + characterCurrency: { + gold: "DS4.CharacterCurrencyGold", + silver: "DS4.CharacterCurrencySilver", + copper: "DS4.CharacterCurrencyCopper", + }, + + /** + * Define the different creature types a creature can be + */ + creatureTypes: { + animal: "DS4.CreatureTypeAnimal", + construct: "DS4.CreatureTypeConstruct", + humanoid: "DS4.CreatureTypeHumanoid", + magicalEntity: "DS4.CreatureTypeMagicalEntity", + plantBeing: "DS4.CreatureTypePlantBeing", + undead: "DS4.CreatureTypeUndead", + }, + + /** + * Define the different size categories creatures fall into + */ + creatureSizeCategories: { + tiny: "DS4.CreatureSizeCategoryTiny", + small: "DS4.CreatureSizeCategorySmall", + normal: "DS4.CreatureSizeCategoryNormal", + large: "DS4.CreatureSizeCategoryLarge", + huge: "DS4.CreatureSizeCategoryHuge", + colossal: "DS4.CreatureSizeCategoryColossal", + }, + + /** + * Define the base info of a creature + */ + creatureBaseInfo: { + loot: "DS4.CreatureBaseInfoLoot", + foeFactor: "DS4.CreatureBaseInfoFoeFactor", + creatureType: "DS4.CreatureBaseInfoCreatureType", + sizeCategory: "DS4.CreatureBaseInfoSizeCategory", + experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", + description: "DS4.CreatureBaseInfoDescription", + }, + + /** + * Define translations for available distance units + */ + distanceUnits: { + meter: "DS4.UnitMeters", + kilometer: "DS4.UnitKilometers", + custom: "DS4.UnitCustom", + }, + /** + * Define abbreviations for available distance units + */ + distanceUnitsAbbr: { + meter: "DS4.UnitMetersAbbr", + kilometer: "DS4.UnitKilometersAbbr", + custom: "DS4.UnitCustomAbbr", + }, + + /** + * Define translations for available duration units + */ + temporalUnits: { + rounds: "DS4.UnitRounds", + minutes: "DS4.UnitMinutes", + hours: "DS4.UnitHours", + days: "DS4.UnitDays", + custom: "DS4.UnitCustom", + }, + + /** + * Define abbreviations for available duration units + */ + temporalUnitsAbbr: { + rounds: "DS4.UnitRoundsAbbr", + minutes: "DS4.UnitMinutesAbbr", + hours: "DS4.UnitHoursAbbr", + days: "DS4.UnitDaysAbbr", + custom: "DS4.UnitCustomAbbr", + }, + + checks: { + appraise: "DS4.ChecksAppraise", + changeSpell: "DS4.ChecksChangeSpell", + climb: "DS4.ChecksClimb", + communicate: "DS4.ChecksCommunicate", + decipherScript: "DS4.ChecksDecipherScript", + defend: "DS4.ChecksDefend", + defyPoison: "DS4.ChecksDefyPoison", + disableTraps: "DS4.ChecksDisableTraps", + featOfStrength: "DS4.ChecksFeatOfStrength", + flirt: "DS4.ChecksFlirt", + haggle: "DS4.ChecksHaggle", + hide: "DS4.ChecksHide", + identifyMagic: "DS4.ChecksIdentifyMagic", + jump: "DS4.ChecksJump", + knowledge: "DS4.ChecksKnowledge", + openLock: "DS4.ChecksOpenLock", + perception: "DS4.ChecksPerception", + pickPocket: "DS4.ChecksPickPocket", + readTracks: "DS4.ChecksReadTracks", + resistDisease: "DS4.ChecksResistDisease", + ride: "DS4.ChecksRide", + search: "DS4.ChecksSearch", + senseMagic: "DS4.ChecksSenseMagic", + sneak: "DS4.ChecksSneak", + startFire: "DS4.ChecksStartFire", + swim: "DS4.ChecksSwim", + wakeUp: "DS4.ChecksWakeUp", + workMechanism: "DS4.ChecksWorkMechanism", + }, + + /** + * Translations for the standard check modifiers + */ + checkModifiers: { + routine: "DS4.CheckModifierRoutine", + veryEasy: "DS4.CheckModifierVeryEasy", + easy: "DS4.CheckModifierEasy", + normal: "DS4.CheckModifierMormal", + difficult: "DS4.CheckModifierDifficult", + veryDifficult: "DS4.CheckModifierVeryDifficult", + extremelyDifficult: "DS4.CheckModifierExtremelyDifficult", + custom: "DS4.CheckModifierCustom", + }, +}; + +export const DS4 = { + // ASCII Artwork + ASCII: String.raw`_____________________________________________________________________________________________ + ____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _ +| _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || | +| | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_ +| |_| | |_| | |\ | |_| | |__| |_| | |\ |___) | |___ / ___ \| | | |___| _ < ___) | |__ _| +|____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_| +=============================================================================================`, + + /** + * A dictionary of dictionaries each mapping keys to localized strings + * resp. their localization keys. + * The localization is assumed to take place on each reload. + */ + i18n: i18nKeys, + + /** + * A dictionary of dictionaries each mapping keys to localizion keys. + */ + i18nKeys, + + /** + * A dictionary of dictionaries mapping keys to icon file paths. + */ + icons: { + /** + * Define the file paths to icon images + */ + attackTypes: { + melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png", + meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png", + ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png", + }, + + /** + * Define the file paths to icon images + */ + spellTypes: { + spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png", + targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png", + }, + + /** + * Define the file paths to check images + */ + checks: { + appraise: "systems/ds4/assets/icons/game-icons/delapouite/two-coins.svg", + changeSpell: "systems/ds4/assets/icons/game-icons/delapouite/card-exchange.svg", + climb: "systems/ds4/assets/icons/game-icons/caro-asercion/mountain-climbing.svg", + communicate: "systems/ds4/assets/icons/game-icons/delapouite/discussion.svg", + decipherScript: "systems/ds4/assets/icons/game-icons/lorc/rune-stone.svg", + defend: "systems/ds4/assets/icons/game-icons/sbed/shield.svg", + defyPoison: "systems/ds4/assets/icons/game-icons/lorc/poison-bottle.svg", + disableTraps: "systems/ds4/assets/icons/game-icons/lorc/wolf-trap.svg", + featOfStrength: "systems/ds4/assets/icons/game-icons/delapouite/biceps.svg", + flirt: "systems/ds4/assets/icons/game-icons/lorc/charm.svg", + haggle: "systems/ds4/assets/icons/game-icons/lorc/cash.svg", + hide: "systems/ds4/assets/icons/game-icons/lorc/hidden.svg", + identifyMagic: "systems/ds4/assets/icons/game-icons/lorc/uncertainty.svg", + jump: "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", + knowledge: "systems/ds4/assets/icons/game-icons/delapouite/bookshelf.svg", + openLock: "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", + perception: "systems/ds4/assets/icons/game-icons/lorc/awareness.svg", + pickPocket: "systems/ds4/assets/icons/game-icons/darkzaitev/robber-hand.svg", + readTracks: "systems/ds4/assets/icons/game-icons/delapouite/deer-track.svg", + resistDisease: "systems/ds4/assets/icons/game-icons/lorc/virus.svg", + ride: "systems/ds4/assets/icons/game-icons/delapouite/cavalry.svg", + search: "systems/ds4/assets/icons/game-icons/lorc/magnifying-glass.svg", + senseMagic: "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", + sneak: "systems/ds4/assets/icons/game-icons/delapouite/mute.svg", + startFire: "systems/ds4/assets/icons/game-icons/lorc/campfire.svg", + swim: "systems/ds4/assets/icons/game-icons/delapouite/pool-dive.svg", + wakeUp: "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", + workMechanism: "systems/ds4/assets/icons/game-icons/lorc/lever.svg", + }, + }, + + /** + * Profile info types for handlebars of a character + */ + characterProfileDTypes: { + biography: "String", + gender: "String", + birthday: "String", + birthplace: "String", + age: "Number", + height: "Number", + hairColor: "String", + weight: "Number", + eyeColor: "String", + specialCharacteristics: "String", + }, + + /** + * Standard check modifiers + */ + checkModifiers: { + routine: 8, + veryEasy: 4, + easy: 2, + normal: 0, + difficult: -2, + veryDifficult: -4, + extremelyDifficult: -8, + }, +}; diff --git a/src/dice/check-evaluation.ts b/src/dice/check-evaluation.ts new file mode 100644 index 00000000..4b007160 --- /dev/null +++ b/src/dice/check-evaluation.ts @@ -0,0 +1,136 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +export function evaluateCheck( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + minimumFumbleResult = 20, + canFumble = true, + }: { maximumCoupResult?: number; minimumFumbleResult?: number; canFumble?: boolean } = {}, +): SubCheckResult[] { + const diceWithSubChecks = assignSubChecksToDice(dice, checkTargetNumber, { + maximumCoupResult: maximumCoupResult, + }); + return evaluateDiceWithSubChecks(diceWithSubChecks, { + maximumCoupResult: maximumCoupResult, + minimumFumbleResult: minimumFumbleResult, + canFumble: canFumble, + }); +} + +interface DieWithSubCheck { + result: number; + checkTargetNumber: number; +} + +function assignSubChecksToDice( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + }: { + maximumCoupResult?: number; + } = {}, +): DieWithSubCheck[] { + const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); + + if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { + throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice")); + } + + const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); + + const indexOfSmallestNonCoup = findIndexOfSmallestNonCoup(dice, maximumCoupResult); + const indexOfFirstCoup = dice.findIndex((die) => die <= maximumCoupResult); + const indexForLastSubCheck = shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup, + indexOfFirstCoup, + dice, + checkTargetNumberForLastSubCheck, + ) + ? indexOfFirstCoup + : indexOfSmallestNonCoup; + + return dice.map((die, index) => ({ + result: die, + checkTargetNumber: index === indexForLastSubCheck ? checkTargetNumberForLastSubCheck : 20, + })); +} + +function findIndexOfSmallestNonCoup(dice: number[], maximumCoupResult: number): number { + return dice + .map((die, index): [number, number] => [die, index]) + .filter((indexedDie) => indexedDie[0] > maximumCoupResult) + .reduce( + (smallestIndexedDie, indexedDie) => (indexedDie[0] < smallestIndexedDie[0] ? indexedDie : smallestIndexedDie), + [Infinity, -1], + )[1]; +} + +function shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup: number, + indexOfFirstCoup: number, + dice: readonly number[], + checkTargetNumberForLastSubCheck: number, +) { + if (indexOfFirstCoup !== -1 && indexOfSmallestNonCoup === -1) { + return true; + } + const smallestNonCoup = dice[indexOfSmallestNonCoup]; + if ( + !Number.isInteger(indexOfFirstCoup) || + indexOfFirstCoup < -1 || + !Number.isInteger(indexOfSmallestNonCoup) || + smallestNonCoup === undefined + ) { + throw new Error("Received an invalid value for the parameter indexOfSmallestNonCoup or indexOfFirstCoup,"); + } + return ( + indexOfFirstCoup !== -1 && + smallestNonCoup > checkTargetNumberForLastSubCheck && + smallestNonCoup + checkTargetNumberForLastSubCheck > 20 + ); +} + +interface SubCheckResult extends DieWithSubCheck { + active?: boolean; + discarded?: boolean; + success?: boolean; + failure?: boolean; + count?: number; +} + +function evaluateDiceWithSubChecks( + results: DieWithSubCheck[], + { + maximumCoupResult, + minimumFumbleResult, + canFumble, + }: { maximumCoupResult: number; minimumFumbleResult: number; canFumble: boolean }, +): SubCheckResult[] { + return results.map((dieWithSubCheck, index) => { + const result: SubCheckResult = { + ...dieWithSubCheck, + active: dieWithSubCheck.result <= dieWithSubCheck.checkTargetNumber, + discarded: dieWithSubCheck.result > dieWithSubCheck.checkTargetNumber, + }; + if (result.result <= maximumCoupResult) { + result.success = true; + result.count = result.checkTargetNumber; + result.active = true; + result.discarded = false; + } + if (index === 0 && canFumble && result.result >= minimumFumbleResult) result.failure = true; + return result; + }); +} + +export function getRequiredNumberOfDice(checkTargetNumber: number): number { + return Math.max(Math.ceil(checkTargetNumber / 20), 1); +} diff --git a/src/dice/check-factory.js b/src/dice/check-factory.js new file mode 100644 index 00000000..6063ca98 --- /dev/null +++ b/src/dice/check-factory.js @@ -0,0 +1,300 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { DialogWithListeners } from "../apps/dialog-with-listeners"; +import { DS4 } from "../config"; +import { getGame } from "../utils/utils"; + +/** @typedef {"publicroll" | "gmroll" | "gmroll" | "selfroll"} RollModes */ + +/** + * Most basic class responsible for generating the chat formula and passing it to the chat as roll. + */ +class CheckFactory { + /** + * @param {number} checkTargetNumber The check target number for this check factory + * @param {number} checkModifier The check modifier for this check factory + * @param {Partial} [options] Options for this check factory + */ + constructor(checkTargetNumber, checkModifier, options = {}) { + this.#checkTargetNumber = checkTargetNumber; + this.#checkModifier = checkModifier; + this.#options = foundry.utils.mergeObject(this.constructor.defaultOptions, options); + } + + /** + * The check target number for this check factory. + * @type {number} + */ + #checkTargetNumber; + + /** + * The check modifier for this check factory. + * @type {number} + */ + #checkModifier; + + /** + * The options for this check factory. + * @type {DS4CheckFactoryOptions} + */ + #options; + + /** + * The default options of thos CheckFactory class. Upon instantiation, they are merged with the explicitly provided options. + * @type {DS4CheckFactoryOptions} + */ + static get defaultOptions() { + return { + maximumCoupResult: 1, + minimumFumbleResult: 20, + useSlayingDice: false, + rollMode: "publicroll", + }; + } + + /** + * Execute this check factory. + * @returns {Promise} A promise that resolves to the created chat message for the roll */ + async execute() { + const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin(""); + const formula = this.#options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; + const roll = Roll.create(formula); + const speaker = this.#options.speaker ?? ChatMessage.getSpeaker(); + + return roll.toMessage( + { + speaker, + flavor: this.#options.flavor, + flags: this.#options.flavorData ? { ds4: { flavorData: this.#options.flavorData } } : undefined, + }, + { rollMode: this.#options.rollMode, create: true }, + ); + } + + /** + * Create the check target number modifier for this roll. + * @returns string + */ + createCheckTargetNumberModifier() { + const totalCheckTargetNumber = this.#checkTargetNumber + this.#checkModifier; + return totalCheckTargetNumber >= 0 ? `v${this.#checkTargetNumber + this.#checkModifier}` : "v0"; + } + + /** + * Create the coup fumble modifier for this roll. + * @returns {string | null} + */ + createCoupFumbleModifier() { + const isMinimumFumbleResultRequired = + this.#options.minimumFumbleResult !== this.constructor.defaultOptions.minimumFumbleResult; + const isMaximumCoupResultRequired = + this.#options.maximumCoupResult !== this.constructor.defaultOptions.maximumCoupResult; + + if (isMinimumFumbleResultRequired || isMaximumCoupResultRequired) { + return `c${this.#options.maximumCoupResult ?? ""}:${this.#options.minimumFumbleResult ?? ""}`; + } else { + return null; + } + } +} + +/** + * Asks the user for all unknown/necessary information and passes them on to perform a roll. + * @param {number} checkTargetNumber The Check Target Number ("CTN") + * @param {Partial} [options={}] Options changing the behavior of the roll and message. + * @returns {Promise} A promise that resolves to the chat message created by the roll + */ +export async function createCheckRoll(checkTargetNumber, options = {}) { + // Ask for additional required data; + const interactiveRollData = await askForInteractiveRollData(checkTargetNumber, options); + + const newTargetValue = interactiveRollData.checkTargetNumber ?? checkTargetNumber; + const checkModifier = interactiveRollData.checkModifier ?? 0; + /** @type {Partial} */ + const newOptions = { + maximumCoupResult: interactiveRollData.maximumCoupResult ?? options.maximumCoupResult, + minimumFumbleResult: interactiveRollData.minimumFumbleResult ?? options.minimumFumbleResult, + useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + rollMode: interactiveRollData.rollMode ?? options.rollMode, + flavor: options.flavor, + flavorData: options.flavorData, + speaker: options.speaker, + }; + + // Create Factory + const cf = new CheckFactory(newTargetValue, checkModifier, newOptions); + + // Possibly additional processing + + // Execute roll + return cf.execute(); +} + +/** + * Responsible for rendering the modal interface asking for the check modifier and (currently) additional + * data. + * + * @notes + * At the moment, this asks for more data than it will do after some iterations. + * + * @param {number} checkTargetNumber The check target number + * @param {Partial} [options={}] Predefined roll options + * @param {template?: string | undefined; title?: string | undefined} [additionalOptions={}] Additional options to use for the dialog + * @returns {Promise>} A promise that resolves to the data given by the user. + */ +async function askForInteractiveRollData(checkTargetNumber, options = {}, { template, title } = {}) { + const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; + const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle"); + const id = foundry.utils.randomID(); + const templateData = { + title: usedTitle, + checkTargetNumber: checkTargetNumber, + maximumCoupResult: options.maximumCoupResult ?? this.constructor.defaultOptions.maximumCoupResult, + minimumFumbleResult: options.minimumFumbleResult ?? this.constructor.defaultOptions.minimumFumbleResult, + rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"), + rollModes: CONFIG.Dice.rollModes, + checkModifiers: Object.entries(DS4.i18n.checkModifiers).map(([key, translation]) => { + if (key in DS4.checkModifiers) { + const value = DS4.checkModifiers[key]; + const label = `${translation} (${value >= 0 ? `+${value}` : value})`; + return { value, label }; + } + return { value: key, label: translation }; + }), + id, + }; + const renderedHtml = await renderTemplate(usedTemplate, templateData); + + const dialogPromise = new Promise((resolve) => { + new DialogWithListeners( + { + title: usedTitle, + content: renderedHtml, + buttons: { + ok: { + icon: '', + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + if (!("jquery" in html)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", { + exType: "JQuery", + realType: "HTMLElement", + }), + ); + } else { + const innerForm = html[0]?.querySelector("form"); + if (!innerForm) { + throw new Error( + getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { + htmlElement: "form", + }), + ); + } + resolve(innerForm); + } + }, + }, + cancel: { + icon: '', + label: getGame().i18n.localize("DS4.GenericCancelButton"), + }, + }, + default: "ok", + }, + { + activateAdditionalListeners: (html, app) => { + const checkModifierCustomFormGroup = html.find(`#check-modifier-custom-${id}`).parent(".form-group"); + html.find(`#check-modifier-${id}`).on("change", (event) => { + if (event.currentTarget.value === "custom" && checkModifierCustomFormGroup.hasClass("ds4-hidden")) { + checkModifierCustomFormGroup.removeClass("ds4-hidden"); + app.setPosition({ height: "auto" }); + } else if (!checkModifierCustomFormGroup.hasClass("ds4-hidden")) { + checkModifierCustomFormGroup.addClass("ds4-hidden"); + app.setPosition({ height: "auto" }); + } + }); + }, + id, + }, + ).render(true); + }); + const dialogForm = await dialogPromise; + return parseDialogFormData(dialogForm); +} + +/** + * Extracts Dialog data from the returned DOM element. + * @param {HTMLFormElement} formData The filed dialog + * @returns {Partial} + */ +function parseDialogFormData(formData) { + const chosenCheckTargetNumber = parseInt(formData["check-target-number"]?.value); + const chosenCheckModifier = formData["check-modifier"]?.value; + + const chosenCheckModifierValue = + chosenCheckModifier === "custom" + ? parseInt(formData["check-modifier-custom"]?.value) + : parseInt(chosenCheckModifier); + + const chosenMaximumCoupResult = parseInt(formData["maximum-coup-result"]?.value); + const chosenMinimumFumbleResult = parseInt(formData["minimum-fumble-result"]?.value); + const chosenRollMode = formData["roll-mode"]?.value; + + return { + checkTargetNumber: Number.isSafeInteger(chosenCheckTargetNumber) ? chosenCheckTargetNumber : undefined, + checkModifier: Number.isSafeInteger(chosenCheckModifierValue) ? chosenCheckModifierValue : undefined, + maximumCoupResult: Number.isSafeInteger(chosenMaximumCoupResult) ? chosenMaximumCoupResult : undefined, + minimumFumbleResult: Number.isSafeInteger(chosenMinimumFumbleResult) ? chosenMinimumFumbleResult : undefined, + rollMode: Object.keys(CONFIG.Dice.rollModes).includes(chosenRollMode) ? chosenRollMode : undefined, + }; +} + +/** + * Contains data that needs retrieval from an interactive Dialog. + * @typedef {object} InteractiveRollData + * @property {number} checkModifier + * @property {RollModes} rollMode + */ + +/** + * Contains *CURRENTLY* necessary Data for drafting a roll. + * + * @deprecated + * Quite a lot of this information is requested due to a lack of automation: + * - maximumCoupResult + * - minimumFumbleResult + * - checkTargetNumber + * + * They will and should be removed once effects and data retrieval is in place. + * If a "raw" roll dialog is necessary, create another pre-processing Dialog + * class asking for the required information. + * This interface should then be replaced with the {@link InteractiveRollData}. + * @typedef {object} IntermediateInteractiveRollData + * @property {number} checkTargetNumber + * @property {number} maximumCoupResult + * @property {number} minimumFumbleResult + */ + +/** + * The minimum behavioral options that need to be passed to the factory. + * @typedef {object} DS4CheckFactoryOptions + * @property {number} maximumCoupResult + * @property {number} minimumFumbleResult + * @property {boolean} useSlayingDice + * @property {RollModes} rollMode + * @property {string} [flavor] + * @property {Record} [flavorData] + * @property {ChatSpeakerData} [speaker] + */ + +/** + * @typedef {object} ChatSpeakerData + * @property {string | null} [scene] + * @property {string | null} [actor] + * @property {string | null} [token] + * @property {string | null} [alias] + */ diff --git a/src/dice/check.js b/src/dice/check.js new file mode 100644 index 00000000..38bd9383 --- /dev/null +++ b/src/dice/check.js @@ -0,0 +1,143 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { evaluateCheck, getRequiredNumberOfDice } from "./check-evaluation"; + +/** + * Implements DS4 Checks as an emulated "dice throw". + * + * @example + * - Roll a check against a Check Target Number (CTN) of 18: `/r dsv18` + * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` + * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19` + * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` + */ +export class DS4Check extends foundry.dice.terms.DiceTerm { + constructor({ modifiers = [], results = [], options } = {}) { + super({ + faces: 20, + results, + modifiers, + options, + }); + + // Parse and store check target number + const checkTargetNumberModifier = this.modifiers.filter((m) => m[0] === "v")[0]; + const ctnRgx = new RegExp("v([0-9]+)?"); + const ctnMatch = checkTargetNumberModifier?.match(ctnRgx); + if (ctnMatch) { + const [parseCheckTargetNumber] = ctnMatch.slice(1); + this.checkTargetNumber = parseCheckTargetNumber + ? parseInt(parseCheckTargetNumber) + : DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + } + + this.number = getRequiredNumberOfDice(this.checkTargetNumber); + + // Parse and store maximumCoupResult and minimumFumbleResult + const coupFumbleModifier = this.modifiers.filter((m) => m[0] === "c")[0]; + const cfmRgx = new RegExp("c([0-9]+)?(:([0-9]+))?"); + const cfmMatch = coupFumbleModifier?.match(cfmRgx); + if (cfmMatch) { + const parseMaximumCoupResult = cfmMatch[1]; + const parseMinimumFumbleResult = cfmMatch[3]; + this.maximumCoupResult = parseMaximumCoupResult + ? parseInt(parseMaximumCoupResult) + : DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + this.minimumFumbleResult = parseMinimumFumbleResult + ? parseInt(parseMinimumFumbleResult) + : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + if (this.minimumFumbleResult <= this.maximumCoupResult) + throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); + } + + // Parse and store no fumble + const noFumbleModifier = this.modifiers.filter((m) => m[0] === "n")[0]; + if (noFumbleModifier) { + this.canFumble = false; + } + + if (this.results.length > 0) { + this.evaluateResults(); + } + } + + /** @type {boolean | null} */ + coup = null; + /** @type {boolean | null} */ + fumble = null; + canFumble = true; + checkTargetNumber = DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + minimumFumbleResult = DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + maximumCoupResult = DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + + /** @override */ + get expression() { + return `ds${this.modifiers.join("")}`; + } + + /** @override */ + get total() { + if (this.fumble) return 0; + return super.total; + } + + /** @override */ + _evaluateSync(options = {}) { + super._evaluateSync(options); + this.evaluateResults(); + return this; + } + + /** @override */ + async _evaluateAsync(options = {}) { + await super._evaluateAsync(options); + this.evaluateResults(); + return this; + } + + /** @override */ + roll({ minimize = false, maximize = false } = {}) { + // Swap minimize / maximize because in DS4, the best possible roll is a 1 and the worst possible roll is a 20 + return super.roll({ minimize: maximize, maximize: minimize }); + } + + /** + * Perform additional evaluation after the individual results have been evaluated. + * @protected + */ + evaluateResults() { + const dice = this.results.map((die) => die.result); + const results = evaluateCheck(dice, this.checkTargetNumber, { + maximumCoupResult: this.maximumCoupResult, + minimumFumbleResult: this.minimumFumbleResult, + canFumble: this.canFumble, + }); + this.results = results; + this.coup = results[0]?.success ?? false; + this.fumble = results[0]?.failure ?? false; + } + + /** + * @remarks "min" and "max" are filtered out because they are irrelevant for + * {@link DS4Check}s and only result in some dice rolls being highlighted + * incorrectly. + * @override + */ + getResultCSS(result) { + return super.getResultCSS(result).filter((cssClass) => cssClass !== "min" && cssClass !== "max"); + } + + static DEFAULT_CHECK_TARGET_NUMBER = 10; + static DEFAULT_MAXIMUM_COUP_RESULT = 1; + static DEFAULT_MINIMUM_FUMBLE_RESULT = 20; + static DENOMINATION = "s"; + static MODIFIERS = { + c: () => undefined, // Modifier is consumed in constructor for maximumCoupResult / minimumFumbleResult + v: () => undefined, // Modifier is consumed in constructor for checkTargetNumber + n: () => undefined, // Modifier is consumed in constructor for canFumble + }; +} diff --git a/src/dice/roll.js b/src/dice/roll.js new file mode 100644 index 00000000..bc632a07 --- /dev/null +++ b/src/dice/roll.js @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4Check } from "./check"; + +export class DS4Roll extends Roll { + /** @override */ + static CHAT_TEMPLATE = "systems/ds4/templates/dice/roll.hbs"; + + /** + * @override + * @remarks + * This only differs from {@link Roll#render} in that it provides `isCoup` and `isFumble` properties to the roll + * template if the first dice term is a ds4 check. + */ + async render({ flavor, template = this.constructor.CHAT_TEMPLATE, isPrivate = false } = {}) { + if (!this._evaluated) await this.evaluate({ async: true }); + const firstDiceTerm = this.dice[0]; + const isCoup = firstDiceTerm instanceof DS4Check && firstDiceTerm.coup; + const isFumble = firstDiceTerm instanceof DS4Check && firstDiceTerm.fumble; + const chatData = { + formula: isPrivate ? "???" : this._formula, + flavor: isPrivate ? null : flavor, + user: getGame().user?.id, + tooltip: isPrivate ? "" : await this.getTooltip(), + total: isPrivate ? "?" : Math.round((this.total ?? 0) * 100) / 100, + isCoup: isPrivate ? null : isCoup, + isFumble: isPrivate ? null : isFumble, + }; + return renderTemplate(template, chatData); + } +} diff --git a/src/dice/slaying-dice-modifier.js b/src/dice/slaying-dice-modifier.js new file mode 100644 index 00000000..5f50aec0 --- /dev/null +++ b/src/dice/slaying-dice-modifier.js @@ -0,0 +1,36 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4Check } from "./check"; + +export function registerSlayingDiceModifier() { + foundry.dice.terms.PoolTerm.MODIFIERS.x = slay; +} + +/** + * @this {PoolTerm} + * @param {string} modifier + */ +async function slay(modifier) { + const rgx = /[xX]/; + const match = modifier.match(rgx); + if (!match || !this.rolls) return; + + let checked = 0; + while (checked < (this.dice.length ?? 0)) { + const diceTerm = this.dice[checked]; + checked++; + if (diceTerm instanceof DS4Check && diceTerm.coup) { + const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; + const additionalRoll = await Roll.create(formula).evaluate(); + + this.rolls.push(additionalRoll); + this.results.push({ result: additionalRoll.total ?? 0, active: true }); + this.terms.push(formula); + } + if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); + } +} diff --git a/src/documents/active-effect.js b/src/documents/active-effect.js new file mode 100644 index 00000000..f7c4afc1 --- /dev/null +++ b/src/documents/active-effect.js @@ -0,0 +1,176 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { mathEvaluator } from "../expression-evaluation/evaluator"; +import { getGame } from "../utils/utils"; + +/** + * @typedef {object} ItemEffectConfig + * @property {boolean} [applyToItems] Whether or not to apply this effect to owned items instead of the actor + * @property {string} [itemName] Only apply this effect to items with this name + * @property {string} [condition] Only apply this effect to items where this condition is fullfilled + */ + +/** + * @typedef {object} DS4ActiveEffectFlags + * @property {ItemEffectConfig} [itemEffectConfig] Configuration for applying this effect to owned items + */ + +/** + * @typedef {Record} ActiveEffectFlags + * @property {DS4ActiveEffectFlags} [ds4] Flags for DS4 + */ + +export class DS4ActiveEffect extends ActiveEffect { + /** + * A fallback icon that can be used if no icon is defined for the effect. + */ + static FALLBACK_ICON = "icons/svg/aura.svg"; + + /** + * A cached reference to the source document to avoid recurring database lookups + * @type {foundry.abstract.Document | undefined | null} + * @protected + */ + source = undefined; + + /** @override */ + get isSuppressed() { + const originatingItem = this.originatingItem; + if (!originatingItem) { + return false; + } + return originatingItem.isNonEquippedEuipable(); + } + + /** + * The item which this effect originates from if it has been transferred from an item to an actor. + * @return {import("./item/item").DS4Item | undefined} + */ + get originatingItem() { + if (this.parent instanceof Item) { + return this.parent; + } + return undefined; + } + + /** + * The number of times this effect should be applied. + * @type {number} + */ + get factor() { + return this.originatingItem?.activeEffectFactor ?? 1; + } + + /** @override */ + apply(document, change) { + change.value = Roll.replaceFormulaData(change.value, document); + try { + change.value = DS4ActiveEffect.safeEval(change.value).toString(); + } catch { + // this is a valid case, e.g., if the effect change simply is a string + } + return super.apply(document, change); + } + + /** + * Create a new {@link DS4ActiveEffect} using default values. + * + * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} parent The parent of the effect. + * @returns {Promise} A promise that resolved to the created effect or udifined of the + * creation was prevented. + */ + static async createDefault(parent) { + const createData = { + name: getGame().i18n.localize(`DS4.NewEffectName`), + icon: this.FALLBACK_ICON, + }; + + return this.create(createData, { parent }); + } + + /** + * Safely evaluate a mathematical expression. + * @param {string} expression The expression to evaluate + * @returns {number | `${number | boolean}`} The numeric result of the expression + * @throws If the expression could not be evaluated or did not produce a numeric resilt + */ + static safeEval(expression) { + const result = mathEvaluator.evaluate(expression); + if (!Number.isNumeric(result)) { + throw new Error(`mathEvaluator.evaluate produced a non-numeric result from expression "${expression}"`); + } + return result; + } + + /** + * Apply the given effects to the gicen Actor or item. + * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} document The Actor or Item to which to apply the effects + * @param {DS4ActiveEffect[]} effetcs The effects to apply + * @param {(change: EffectChangeData) => boolean} [predicate=() => true] Apply only changes that fullfill this predicate + * @returns {Set} The statuses that are applied by this effect + */ + static applyEffetcs(document, effetcs, predicate = () => true) { + /** @type {Record} */ + const overrides = {}; + + /** @type {Set} */ + const statuses = new Set(); + + // Organize active effect changes by their application priority + const changesWithEffect = effetcs.flatMap((e) => { + if (!e.active) { + return []; + } + for (const statusId of e.statuses) { + statuses.add(statusId); + } + return e.getFactoredChangesWithEffect(predicate); + }); + changesWithEffect.sort((a, b) => (a.change.priority ?? 0) - (b.change.priority ?? 0)); + + // Apply all changes + for (const changeWithEffect of changesWithEffect) { + if (!changeWithEffect.change.key) continue; + const changes = changeWithEffect.effect.apply(document, changeWithEffect.change); + Object.assign(overrides, changes); + } + + // Expand the set of final overrides + document.overrides = foundry.utils.expandObject({ + ...foundry.utils.flattenObject(document.overrides), + ...overrides, + }); + + return statuses; + } + + /** + * Get the array of changes for this effect, considering the {@link DS4ActiveEffect#factor}. + * @param {(change: EffectChangeData) => boolean} [predicate=() => true] An optional predicate to filter which changes should be considered + * @returns {EffectChangeDataWithEffect[]} The array of changes from this effect, considering the factor. + * @protected + */ + getFactoredChangesWithEffect(predicate = () => true) { + return this.changes.filter(predicate).flatMap((change) => { + const c = foundry.utils.deepClone(change); + c.priority = c.priority ?? c.mode * 10; + return Array(this.factor).fill({ effect: this, change: c }); + }); + } +} + +/** + * @typedef {object} EffectChangeDataWithEffect + * @property {DS4ActiveEffect} effect + * @property {EffectChangeData} change + */ + +/** + * @typedef {object} EffectChangeData + * @property {string} key The attribute path in the Actor or Item data which the change modifies + * @property {string} value The value of the change effect + * @property {number} mode The modification mode with which the change is applied + * @property {number} priority The priority level with which this change is applied + */ diff --git a/src/documents/actor/actor-data-properties-base.ts b/src/documents/actor/actor-data-properties-base.ts new file mode 100644 index 00000000..57144f1b --- /dev/null +++ b/src/documents/actor/actor-data-properties-base.ts @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; + +import type { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; + +export interface DS4ActorDataPropertiesDataBase { + attributes: DS4ActorDataPropertiesDataAttributes; + traits: DS4ActorDataPropertiesDataTraits; + combatValues: DS4ActorDataPropertiesDataCombatValues; + rolling: DS4ActorDataPropertiesDataRolling; + checks: DS4ActorDataPropertiesDataChecks; + armorValueSpellMalus: number; +} + +type DS4ActorDataPropertiesDataAttributes = { + [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; +}; + +type DS4ActorDataPropertiesDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; + +type DS4ActorDataPropertiesDataCombatValues = { + [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" + ? ResourceDataBaseTotalMax + : ModifiableDataBaseTotal; +}; + +interface DS4ActorDataPropertiesDataRolling { + maximumCoupResult: number; + minimumFumbleResult: number; +} + +type DS4ActorDataPropertiesDataChecks = { + [key in Check]: number; +}; + +export type Check = keyof typeof DS4.i18n.checks; + +export function isCheck(value: string): value is Check { + return Object.keys(DS4.i18n.checks).includes(value); +} diff --git a/src/documents/actor/actor-data-properties.ts b/src/documents/actor/actor-data-properties.ts new file mode 100644 index 00000000..ff366af9 --- /dev/null +++ b/src/documents/actor/actor-data-properties.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4CharacterDataProperties } from "./character/character-data-properties"; +import type { DS4CreatureDataProperties } from "./creature/creature-data-properties"; + +declare global { + interface DataConfig { + Actor: DS4ActorDataProperties; + } +} + +export type DS4ActorDataProperties = DS4CharacterDataProperties | DS4CreatureDataProperties; diff --git a/src/documents/actor/actor-data-source-base.ts b/src/documents/actor/actor-data-source-base.ts new file mode 100644 index 00000000..c1a91e55 --- /dev/null +++ b/src/documents/actor/actor-data-source-base.ts @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; + +import type { ModifiableData, ModifiableDataBase, ResourceData } from "../common/common-data"; + +export interface DS4ActorDataSourceDataBase { + attributes: DS4ActorDataSourceDataAttributes; + traits: DS4ActorDataSourceDataTraits; + combatValues: DS4ActorDataSourceDataCombatValues; +} + +type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; + +type Attribute = keyof DS4ActorDataSourceDataAttributes; + +export function isAttribute(value: unknown): value is Attribute { + return (Object.keys(DS4.i18n.attributes) as Array).includes(value); +} + +type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; + +type Trait = keyof DS4ActorDataSourceDataTraits; + +export function isTrait(value: unknown): value is Trait { + return (Object.keys(DS4.i18n.traits) as Array).includes(value); +} + +type DS4ActorDataSourceDataCombatValues = { + [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" ? ResourceData : ModifiableData; +}; + +type CombatValue = keyof DS4ActorDataSourceDataCombatValues; + +export function isCombatValue(value: string): value is CombatValue { + return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); +} diff --git a/src/documents/actor/actor-data-source.ts b/src/documents/actor/actor-data-source.ts new file mode 100644 index 00000000..f491ad6d --- /dev/null +++ b/src/documents/actor/actor-data-source.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4CharacterDataSource } from "./character/character-data-source"; +import type { DS4CreatureDataSource } from "./creature/creature-data-source"; + +declare global { + interface SourceConfig { + Actor: DS4ActorDataSource; + } +} + +export type DS4ActorDataSource = DS4CharacterDataSource | DS4CreatureDataSource; diff --git a/src/documents/actor/actor.js b/src/documents/actor/actor.js new file mode 100644 index 00000000..c1f4d256 --- /dev/null +++ b/src/documents/actor/actor.js @@ -0,0 +1,536 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver RÜmpelein +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../config"; +import { createCheckRoll } from "../../dice/check-factory"; +import { Evaluator } from "../../expression-evaluation/evaluator"; +import { Validator } from "../../expression-evaluation/validator"; +import { logger } from "../../utils/logger"; +import { getGame } from "../../utils/utils"; +import { DS4ActiveEffect } from "../active-effect"; +import { isAttribute, isTrait } from "./actor-data-source-base"; + +/** + * The Actor class for DS4 + */ +export class DS4Actor extends Actor { + /** @type {Set} */ + newStatuses = new Set(); + + /** @override */ + prepareData() { + this.prepareBaseData(); + this.prepareEmbeddedDocuments(); + this.prepareIntermediateData(); + this.applyActiveEffectsToBaseData(); + this.prepareDerivedData(); + this.applyActiveEffectsToDerivedData(); + this.handleStatusChanges(); + this.prepareFinalDerivedData(); + } + + /** @override */ + prepareBaseData() { + this.newStatuses = new Set(); + + this.system.rolling = { + minimumFumbleResult: 20, + maximumCoupResult: 1, + }; + + Object.values(this.system.attributes).forEach((attribute) => (attribute.total = attribute.base + attribute.mod)); + + Object.values(this.system.traits).forEach((trait) => (trait.total = trait.base + trait.mod)); + } + + /** @override */ + prepareEmbeddedDocuments() { + super.prepareEmbeddedDocuments(); + this.applyActiveEffectsToItems(); + } + + /** + * Apply transformations to the Actor data after embedded documents have been prepared, but before effects have been + * applied to the Actor. + */ + prepareIntermediateData() { + this.system.armorValueSpellMalus = this.armorValueSpellMalusOfEquippedItems; + } + + /** + * The effects that should be applied to this actor. + * @type {import("../active-effect").DS4ActiveEffect[]} + * @protected + */ + get actorEffects() { + const effects = []; + for (const effect of this.allApplicableEffects()) { + if (!effect.flags.ds4?.itemEffectConfig?.applyToItems) { + effects.push(effect); + } + } + return effects; + } + + /** + * Get the effects of this actor that should be applied to the given item. + * @param {import("../item/item").DS4Item} item The item for which to get effects + * @returns {import("../active-effect").DS4ActiveEffect[]} The array of effects that are candidates to be applied to the item + */ + itemEffects(item) { + /** @type {(effect: DS4ActiveEffect) => boolean} */ + const shouldEffectBeAppliedToItem = (effect, item) => { + const { applyToItems, itemName, condition } = effect.flags.ds4?.itemEffectConfig ?? {}; + + if (!applyToItems || (itemName !== undefined && itemName !== "" && itemName !== item.name)) { + return false; + } + + if (condition !== undefined && condition !== "") { + try { + const replacedCondition = DS4Actor.replaceFormulaData(condition, { item, actor: this, effect }); + return replacedCondition !== undefined ? Boolean(DS4Actor.evaluator.evaluate(replacedCondition)) : false; + } catch (error) { + logger.warn(error); + return false; + } + } + + return true; + }; + + const effects = []; + for (const effect of this.allApplicableEffects()) { + if (shouldEffectBeAppliedToItem(effect, item)) { + effects.push(effect); + } + } + return effects; + } + + /** + * Replace placholders in a formula with data. + * @param {string} formula The formular to enricht with data + * @param {object} data The data to use for enriching + * @returns {string | undefined} The Enriched formula or undefined, if it contains placeholders that cannot be resolved + * @protected + */ + static replaceFormulaData(formula, data) { + const dataRgx = new RegExp(/@([a-z.0-9_-]+)/gi); + try { + return formula.replace(dataRgx, (_, term) => { + const value = foundry.utils.getProperty(data, term); + if (value == null) { + throw new Error(); + } + return String(value).trim(); + }); + } catch { + return undefined; + } + } + + /** + * We override this with an empty implementation because we have our own custom way of applying + * {@link ActiveEffect}s and {@link Actor#prepareEmbeddedDocuments} calls this. + * @override + */ + applyActiveEffects() { + return; + } + + /** + * Apply active effects to items. + * + * @remarks + * Talents are handled before all other item types, because if the total rank of a talent is affected by any + * effects, that affects how many times effects provided by this talent need to be applied. At the moment, there is + * no special ordering among talents. This means that having a talents that provide effects that adjust the total + * rank of talents can lead to nondeterministic behavior and thus must be avoided. + */ + applyActiveEffectsToItems() { + /* Handle talents before all other item types, because their rank might be affected, which in turn affects how + many times effects provided by that talent are applied */ + for (const item of this.itemTypes.talent) { + this.applyActiveEffectsToItem(item); + } + for (const item of this.items) { + if (item.type === "talent") continue; + this.applyActiveEffectsToItem(item); + } + } + + /** + * Apply effects to the given item. + * @param {import("../item/item").DS4Item} item The item to which to apply effects + * @protected + */ + applyActiveEffectsToItem(item) { + item.overrides = {}; + item.reset(); + DS4ActiveEffect.applyEffetcs(item, this.itemEffects(item)).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply effects to base data + * @protected + */ + applyActiveEffectsToBaseData() { + this.overrides = {}; + DS4ActiveEffect.applyEffetcs( + this, + this.actorEffects, + (change) => + !this.derivedDataProperties.includes(change.key) && !this.finalDerivedDataProperties.includes(change.key), + ).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply effects to derived data + * @protected + */ + applyActiveEffectsToDerivedData() { + DS4ActiveEffect.applyEffetcs(this, this.actorEffects, (change) => + this.derivedDataProperties.includes(change.key), + ).forEach(this.newStatuses.add.bind(this.newStatuses)); + } + + /** + * Apply transformations to the Actor data after effects have been applied to the base data. + * @override + */ + prepareDerivedData() { + this.system.armorValueSpellMalus = Math.max(this.system.armorValueSpellMalus, 0); + this.prepareCombatValues(); + this.prepareChecks(); + } + + /** + * The list of properties that are derived from others, given in dot notation. + * @returns {string[]} The list of derived propertie + */ + get derivedDataProperties() { + const combatValueProperties = Object.keys(DS4.i18n.combatValues).map( + (combatValue) => `system.combatValues.${combatValue}.total`, + ); + const checkProperties = Object.keys(DS4.i18n.checks) + .filter((check) => check !== "defend") + .map((check) => `system.checks.${check}`); + return combatValueProperties.concat(checkProperties); + } + + handleStatusChanges() { + this.statuses ??= new Set(); + + // Identify which special statuses had been active + const specialStatuses = new Map(); + for (const statusId of Object.values(CONFIG.specialStatusEffects)) { + specialStatuses.set(statusId, this.statuses.has(statusId)); + } + this.statuses.clear(); + + // set new statuses + this.newStatuses.forEach(this.statuses.add.bind(this.statuses)); + + // Apply special statuses that changed to active tokens + const tokens = this.getActiveTokens(); + for (const [statusId, wasActive] of specialStatuses) { + const isActive = this.statuses.has(statusId); + if (isActive === wasActive) continue; + for (const token of tokens) { + token._onApplyStatusEffect(statusId, isActive); + } + } + } + + /** + * Apply final transformations to the Actor data after all effects have been applied. + */ + prepareFinalDerivedData() { + Object.values(this.system.attributes).forEach((attribute) => (attribute.total = Math.ceil(attribute.total))); + Object.values(this.system.traits).forEach((trait) => (trait.total = Math.ceil(trait.total))); + Object.entries(this.system.combatValues) + .filter(([key]) => key !== "movement") + .forEach(([, combatValue]) => (combatValue.total = Math.ceil(combatValue.total))); + Object.keys(this.system.checks).forEach((key) => { + this.system.checks[key] = Math.ceil(this.system.checks[key]); + }); + + this.system.combatValues.hitPoints.max = this.system.combatValues.hitPoints.total; + this.system.checks.defend = this.system.combatValues.defense.total; + } + + /** + * The list of properties that are completely derived (i.e. {@link ActiveEffect}s cannot be applied to them), + * given in dot notation. + * @type {string[]} + */ + get finalDerivedDataProperties() { + return ["system.combatValues.hitPoints.max", "system.checks.defend"]; + } + + /** + * The list of item types that can be owned by this actor. + * @type {import("../item/item-data-source").ItemType[]} + */ + get ownableItemTypes() { + return ["weapon", "armor", "shield", "equipment", "loot", "spell"]; + } + + /** + * Checks whether or not the given item type can be owned by the actor. + * @param {import("../item/item-data-source").ItemType} itemType The item type to check + * @returns {boolean} Whether or not this actor can own the given item type + */ + canOwnItemType(itemType) { + return this.ownableItemTypes.includes(itemType); + } + + /** + * Prepares the combat values of the actor. + * @protected + */ + prepareCombatValues() { + const system = this.system; + + system.combatValues.hitPoints.base = system.attributes.body.total + system.traits.constitution.total + 10; + system.combatValues.defense.base = + system.attributes.body.total + system.traits.constitution.total + this.armorValueOfEquippedItems; + system.combatValues.initiative.base = system.attributes.mobility.total + system.traits.agility.total; + system.combatValues.movement.base = system.attributes.mobility.total / 2 + 1; + system.combatValues.meleeAttack.base = system.attributes.body.total + system.traits.strength.total; + system.combatValues.rangedAttack.base = system.attributes.mobility.total + system.traits.dexterity.total; + system.combatValues.spellcasting.base = + system.attributes.mind.total + system.traits.aura.total - system.armorValueSpellMalus; + system.combatValues.targetedSpellcasting.base = + system.attributes.mind.total + system.traits.dexterity.total - system.armorValueSpellMalus; + + Object.values(system.combatValues).forEach( + (combatValue) => (combatValue.total = combatValue.base + combatValue.mod), + ); + } + + /** + * The total armor value of the equipped items. + * @type {number} + * @protected + */ + get armorValueOfEquippedItems() { + return this.equippedItemsWithArmor.map((item) => item.system.armorValue).reduce((a, b) => a + b, 0); + } + + /** + * The armor value spell malus from equipped items. + * @type {number} + * @protected + */ + get armorValueSpellMalusOfEquippedItems() { + return this.equippedItemsWithArmor + .filter((item) => !(item.type === "armor" && ["cloth", "natural"].includes(item.system.armorMaterialType))) + .reduce((sum, item) => sum + item.system.armorValue, 0); + } + + /** + * The equipped items of this actor that provide armor. + * @type {(import("../item/armor/armor").DS4Armor | import("../item/shield/shield").DS4Shield)[]} + * @protected + */ + get equippedItemsWithArmor() { + return this.items.filter((item) => (item.type === "armor" || item.type === "shield") && item.system.equipped); + } + + /** + * Prepares the check target numbers of checks for the actor. + * @protected + */ + prepareChecks() { + const system = this.system; + system.checks = { + appraise: system.attributes.mind.total + system.traits.intellect.total, + changeSpell: system.attributes.mind.total + system.traits.intellect.total, + climb: system.attributes.mobility.total + system.traits.strength.total, + communicate: system.attributes.mind.total + system.traits.dexterity.total + this.itemTypes.language.length, + decipherScript: system.attributes.mind.total + system.traits.intellect.total, + defend: 0, // assigned in prepareFinalDerivedData as it must always match data.combatValues.defense.total and is not changeable by effects + defyPoison: system.attributes.body.total + system.traits.constitution.total, + disableTraps: system.attributes.mind.total + system.traits.dexterity.total, + featOfStrength: system.attributes.body.total + system.traits.strength.total, + flirt: system.attributes.mind.total + system.traits.aura.total, + haggle: system.attributes.mind.total + Math.max(system.traits.intellect.total, system.traits.intellect.total), + hide: system.attributes.mobility.total + system.traits.agility.total, + identifyMagic: system.attributes.mind.total + system.traits.intellect.total, + jump: system.attributes.mobility.total + system.traits.agility.total, + knowledge: system.attributes.mind.total + system.traits.intellect.total, + openLock: system.attributes.mind.total + system.traits.dexterity.total, + perception: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), + pickPocket: system.attributes.mobility.total + system.traits.dexterity.total, + readTracks: system.attributes.mind.total + system.traits.intellect.total, + resistDisease: system.attributes.body.total + system.traits.constitution.total, + ride: system.attributes.mobility.total + Math.max(system.traits.agility.total, system.traits.aura.total), + search: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), + senseMagic: system.attributes.mind.total + system.traits.aura.total, + sneak: system.attributes.mobility.total + system.traits.agility.total, + startFire: system.attributes.mind.total + system.traits.dexterity.total, + swim: system.attributes.mobility.total + system.traits.strength.total, + wakeUp: system.attributes.mind.total + system.traits.intellect.total, + workMechanism: + system.attributes.mind.total + Math.max(system.traits.dexterity.total, system.traits.intellect.total), + }; + } + + /** + * Handle how changes to a Token attribute bar are applied to the Actor. + * This only differs from the base implementation by also allowing negative values. + * @param {string} attribute The attribute path + * @param {number} value The target attribute value + * @param {boolean} [isDelta=false] Whether the number represents a relative change (true) or an absolute change (false) + * @param {boolean} [isBar=true] Whether the new value is part of an attribute bar, or just a direct value + * @returns {Promise} The updated Actor document + * @override + */ + async modifyTokenAttribute(attribute, value, isDelta = false, isBar = true) { + const current = foundry.utils.getProperty(this.system, attribute); + + // Determine the updates to make to the actor data + /** @type {Record} */ + let updates; + if (isBar) { + if (isDelta) value = Math.min(Number(current.value) + value, current.max); + updates = { [`system.${attribute}.value`]: value }; + } else { + if (isDelta) value = Number(current) + value; + updates = { [`system.${attribute}`]: value }; + } + + // Call a hook to handle token resource bar updates + const allowed = Hooks.call("modifyTokenAttribute", { attribute, value, isDelta, isBar }, updates); + return allowed !== false ? this.update(updates) : this; + } + + /** + * Roll for a given check. + * @param {import("./actor-data-properties-base").Check} check The check to perform + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + */ + async rollCheck(check, options = {}) { + const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); + await createCheckRoll(this.system.checks[check], { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: this.system.rolling.maximumCoupResult, + minimumFumbleResult: this.system.rolling.minimumFumbleResult, + flavor: "DS4.ActorCheckFlavor", + flavorData: { actor: speaker.alias ?? this.name, check: DS4.i18nKeys.checks[check] }, + speaker, + }); + } + + /** + * Roll a generic check. A dialog is presented to select the combination of + * Attribute and Trait to perform the check against. + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + */ + async rollGenericCheck(options = {}) { + const attributeAndTrait = await this.selectAttributeAndTrait(); + if (!attributeAndTrait) { + return; + } + const { attribute, trait } = attributeAndTrait; + const checkTargetNumber = this.system.attributes[attribute].total + this.system.traits[trait].total; + const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); + await createCheckRoll(checkTargetNumber, { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: this.system.rolling.maximumCoupResult, + minimumFumbleResult: this.system.rolling.minimumFumbleResult, + flavor: "DS4.ActorGenericCheckFlavor", + flavorData: { + actor: speaker.alias ?? this.name, + attribute: DS4.i18n.attributes[attribute], + trait: DS4.i18n.traits[trait], + }, + speaker, + }); + } + + /** + * Prompt the use to select an attribute and a trait. + * @returns {Promise} + * @protected + */ + async selectAttributeAndTrait() { + const attributeIdentifier = "attribute-trait-selection-attribute"; + const traitIdentifier = "attribute-trait-selection-trait"; + return Dialog.prompt({ + title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), + content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { + selects: [ + { + label: getGame().i18n.localize("DS4.Attribute"), + identifier: attributeIdentifier, + options: Object.fromEntries( + Object.entries(DS4.i18n.attributes).map(([attribute, translation]) => [ + attribute, + `${translation} (${this.system.attributes[attribute].total})`, + ]), + ), + }, + { + label: getGame().i18n.localize("DS4.Trait"), + identifier: traitIdentifier, + options: Object.fromEntries( + Object.entries(DS4.i18n.traits).map(([trait, translation]) => [ + trait, + `${translation} (${this.system.traits[trait].total})`, + ]), + ), + }, + ], + }), + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); + if (!isAttribute(selectedAttribute)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { + actualAttribute: selectedAttribute, + expectedTypes: Object.keys(DS4.i18n.attributes) + .map((attribute) => `'${attribute}'`) + .join(", "), + }), + ); + } + const selectedTrait = html.find(`#${traitIdentifier}`).val(); + if (!isTrait(selectedTrait)) { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedTrait", { + actualTrait: selectedTrait, + expectedTypes: Object.keys(DS4.i18n.traits) + .map((attribute) => `'${attribute}'`) + .join(", "), + }), + ); + } + return { + attribute: selectedAttribute, + trait: selectedTrait, + }; + }, + rejectClose: false, + }); + } + + static evaluator = new Evaluator({ + context: Math, + predicate: (identifier) => + Validator.defaultPredicate(identifier) || ["includes", "toLowerCase", "toUpperCase"].includes(identifier), + }); +} + +/** + * @typedef {object} AttributeAndTrait + * @property {keyof typeof DS4.i18n.attributes} attribute + * @property {keyof typeof DS4.i18n.traits} trait + */ diff --git a/src/documents/actor/character/character-data-properties.ts b/src/documents/actor/character/character-data-properties.ts new file mode 100644 index 00000000..10b87795 --- /dev/null +++ b/src/documents/actor/character/character-data-properties.ts @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; +import type { + DS4CharacterDataSourceDataBaseInfo, + DS4CharacterDataSourceDataCurrency, + DS4CharacterDataSourceDataProfile, + DS4CharacterDataSourceDataProgression, + DS4CharacterDataSourceDataSlayerPoints, +} from "./character-data-source"; + +export interface DS4CharacterDataProperties { + type: "character"; + data: DS4CharacterDataPropertiesData; +} + +interface DS4CharacterDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataPropertiesDataSlayerPoints; +} + +export interface DS4CharacterDataPropertiesDataSlayerPoints extends DS4CharacterDataSourceDataSlayerPoints { + max: number; +} diff --git a/src/documents/actor/character/character-data-source.ts b/src/documents/actor/character/character-data-source.ts new file mode 100644 index 00000000..f9d27feb --- /dev/null +++ b/src/documents/actor/character/character-data-source.ts @@ -0,0 +1,56 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { UsableResource } from "../../common/common-data"; +import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; + +export interface DS4CharacterDataSource { + type: "character"; + data: DS4CharacterDataSourceData; +} + +interface DS4CharacterDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CharacterDataSourceDataBaseInfo; + progression: DS4CharacterDataSourceDataProgression; + profile: DS4CharacterDataSourceDataProfile; + currency: DS4CharacterDataSourceDataCurrency; + slayerPoints: DS4CharacterDataSourceDataSlayerPoints; +} + +export interface DS4CharacterDataSourceDataBaseInfo { + race: string; + class: string; + heroClass: string; + culture: string; +} + +export interface DS4CharacterDataSourceDataProgression { + level: number; + experiencePoints: number; + talentPoints: UsableResource; + progressPoints: UsableResource; +} + +export interface DS4CharacterDataSourceDataProfile { + biography: string; + gender: string; + birthday: string; + birthplace: string; + age: number; + height: number; + hairColor: string; + weight: number; + eyeColor: string; + specialCharacteristics: string; +} + +export interface DS4CharacterDataSourceDataCurrency { + gold: number; + silver: number; + copper: number; +} + +export interface DS4CharacterDataSourceDataSlayerPoints { + value: number; +} diff --git a/src/documents/actor/character/character.js b/src/documents/actor/character/character.js new file mode 100644 index 00000000..b5ddff1a --- /dev/null +++ b/src/documents/actor/character/character.js @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Actor } from "../actor"; + +export class DS4Character extends DS4Actor { + /** @override */ + prepareFinalDerivedData() { + super.prepareFinalDerivedData(); + this.system.slayerPoints.max = 3; + } + + /** @override */ + get finalDerivedDataProperties() { + return [...super.finalDerivedDataProperties, "system.slayerPoints.max"]; + } + + /** @override */ + get ownableItemTypes() { + return [...super.ownableItemTypes, "talent", "racialAbility", "language", "alphabet"]; + } +} diff --git a/src/documents/actor/creature/creature-data-properties.ts b/src/documents/actor/creature/creature-data-properties.ts new file mode 100644 index 00000000..d7d6f539 --- /dev/null +++ b/src/documents/actor/creature/creature-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; +import type { DS4CreatureDataSourceDataBaseInfo } from "./creature-data-source"; + +export interface DS4CreatureDataProperties { + type: "creature"; + data: DS4CreatureDataPropertiesData; +} + +interface DS4CreatureDataPropertiesData extends DS4ActorDataPropertiesDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; +} diff --git a/src/documents/actor/creature/creature-data-source.ts b/src/documents/actor/creature/creature-data-source.ts new file mode 100644 index 00000000..8d1105ab --- /dev/null +++ b/src/documents/actor/creature/creature-data-source.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; + +export interface DS4CreatureDataSource { + type: "creature"; + data: DS4CreatureDataSourceData; +} + +interface DS4CreatureDataSourceData extends DS4ActorDataSourceDataBase { + baseInfo: DS4CreatureDataSourceDataBaseInfo; +} + +export interface DS4CreatureDataSourceDataBaseInfo { + loot: string; + foeFactor: number; + creatureType: CreatureType; + sizeCategory: SizeCategory; + experiencePoints: number; + description: string; +} + +type CreatureType = keyof typeof DS4.i18n.creatureTypes; + +type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; diff --git a/src/documents/actor/creature/creature.ts b/src/documents/actor/creature/creature.ts new file mode 100644 index 00000000..983c2b44 --- /dev/null +++ b/src/documents/actor/creature/creature.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Actor } from "../actor"; + +import type { ItemType } from "../../item/item-data-source"; + +export class DS4Creature extends DS4Actor { + override get ownableItemTypes(): Array { + return [...super.ownableItemTypes, "specialCreatureAbility"]; + } +} diff --git a/src/documents/actor/proxy.js b/src/documents/actor/proxy.js new file mode 100644 index 00000000..5b48b12d --- /dev/null +++ b/src/documents/actor/proxy.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; +import { DS4Actor } from "./actor"; +import { DS4Character } from "./character/character"; +import { DS4Creature } from "./creature/creature"; + +const handler = { + /** + * @param {typeof import("./actor").DS4Actor} + * @param {unknown[]} args + */ + construct(_, args) { + switch (args[0]?.type) { + case "character": + return new DS4Character(...args); + case "creature": + return new DS4Creature(...args); + default: + throw new Error(getGame().i18n.format("DS4.ErrorInvalidActorType", { type: args[0]?.type })); + } + }, +}; + +/** @type {typeof import("./actor").DS4Actor} */ +export const DS4ActorProxy = new Proxy(DS4Actor, handler); diff --git a/src/documents/chat-message.js b/src/documents/chat-message.js new file mode 100644 index 00000000..d32abbff --- /dev/null +++ b/src/documents/chat-message.js @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; + +/** + * @typedef {object} DS4ChatMessageFlags + * @property {Record} [flavorData] Data to use for localizing the flavor of the chat message + */ + +/** + * @typedef {Record} ChatMessageFlags + * @property {DS4ChatMessageFlags} [ds4] Flags for DS4 + */ + +export class DS4ChatMessage extends ChatMessage { + prepareData() { + super.prepareData(); + if (this.flavor) { + const game = getGame(); + const flavorData = Object.fromEntries( + Object.entries(this.flags.ds4?.flavorData ?? {}).map(([key, value]) => [ + key, + typeof value === "string" ? game.i18n.localize(value) : value, + ]), + ); + this.flavor = game.i18n.format(this.flavor, flavorData); + } + } +} diff --git a/src/documents/common/common-data.ts b/src/documents/common/common-data.ts new file mode 100644 index 00000000..c2c1a527 --- /dev/null +++ b/src/documents/common/common-data.ts @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export interface ModifiableData { + mod: T; +} + +export interface HasBase { + base: T; +} +export interface ModifiableDataBase extends ModifiableData, HasBase {} + +export interface HasTotal { + total: T; +} + +export interface ModifiableDataBaseTotal extends ModifiableDataBase, HasTotal {} + +export interface ResourceData extends ModifiableData { + value: T; +} + +export interface HasMax { + max: T; +} + +export interface ModifiableDataBaseMax extends ModifiableDataBase, HasMax {} + +export interface ModifiableDataBaseTotalMax extends ModifiableDataBaseMax, HasTotal {} + +export interface ResourceDataBaseTotalMax extends ResourceData, HasBase, HasTotal, HasMax {} + +export interface UsableResource { + total: T; + used: T; +} diff --git a/src/documents/common/roll-options.js b/src/documents/common/roll-options.js new file mode 100644 index 00000000..89a813ea --- /dev/null +++ b/src/documents/common/roll-options.js @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * @typedef {object} RollOptions + * @property {Speaker} speaker + */ + +/** + * @typedef {object} Speaker + * @property {TokenDocument} [token] + * @property {string} [alias] + */ + +export {} diff --git a/src/documents/item/alphabet/alphabet-data-properties.ts b/src/documents/item/alphabet/alphabet-data-properties.ts new file mode 100644 index 00000000..7b357598 --- /dev/null +++ b/src/documents/item/alphabet/alphabet-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4AlphabetDataSourceData } from "./alphabet-data-source"; + +export interface DS4AlphabetDataProperties { + type: "alphabet"; + data: DS4AlphabetDataPropertiesData; +} + +interface DS4AlphabetDataPropertiesData extends DS4AlphabetDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/alphabet/alphabet-data-source.ts b/src/documents/item/alphabet/alphabet-data-source.ts new file mode 100644 index 00000000..c1b7dff6 --- /dev/null +++ b/src/documents/item/alphabet/alphabet-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4AlphabetDataSource { + type: "alphabet"; + data: DS4AlphabetDataSourceData; +} + +export type DS4AlphabetDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/alphabet/alphabet.ts b/src/documents/item/alphabet/alphabet.ts new file mode 100644 index 00000000..be6e5301 --- /dev/null +++ b/src/documents/item/alphabet/alphabet.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Alphabet extends DS4Item {} diff --git a/src/documents/item/armor/armor-data-properties.ts b/src/documents/item/armor/armor-data-properties.ts new file mode 100644 index 00000000..36f8dcd3 --- /dev/null +++ b/src/documents/item/armor/armor-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4ArmorDataSourceData } from "./armor-data-source"; + +export interface DS4ArmorDataProperties { + type: "armor"; + data: DS4ArmorDataPropertiesData; +} + +interface DS4ArmorDataPropertiesData extends DS4ArmorDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/armor/armor-data-source.ts b/src/documents/item/armor/armor-data-source.ts new file mode 100644 index 00000000..412b12e3 --- /dev/null +++ b/src/documents/item/armor/armor-data-source.ts @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataProtective, +} from "../item-data-source-base"; + +export interface DS4ArmorDataSource { + type: "armor"; + data: DS4ArmorDataSourceData; +} + +export interface DS4ArmorDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective { + armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; + armorType: keyof typeof DS4.i18n.armorTypes; +} diff --git a/src/documents/item/armor/armor.ts b/src/documents/item/armor/armor.ts new file mode 100644 index 00000000..531d0d7c --- /dev/null +++ b/src/documents/item/armor/armor.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Armor extends DS4Item {} diff --git a/src/documents/item/equipment/equipment-data-properties.ts b/src/documents/item/equipment/equipment-data-properties.ts new file mode 100644 index 00000000..1263f723 --- /dev/null +++ b/src/documents/item/equipment/equipment-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4EquipmentDataSourceData } from "./equipment-data-source"; + +export interface DS4EquipmentDataProperties { + type: "equipment"; + data: DS4EquipmentDataPropertiesData; +} + +interface DS4EquipmentDataPropertiesData extends DS4EquipmentDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/equipment/equipment-data-source.ts b/src/documents/item/equipment/equipment-data-source.ts new file mode 100644 index 00000000..15b2c986 --- /dev/null +++ b/src/documents/item/equipment/equipment-data-source.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, +} from "../item-data-source-base"; + +export interface DS4EquipmentDataSource { + type: "equipment"; + data: DS4EquipmentDataSourceData; +} + +export interface DS4EquipmentDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable {} diff --git a/src/documents/item/equipment/equipment.ts b/src/documents/item/equipment/equipment.ts new file mode 100644 index 00000000..748177d5 --- /dev/null +++ b/src/documents/item/equipment/equipment.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Equipment extends DS4Item {} diff --git a/src/documents/item/item-data-properties-base.ts b/src/documents/item/item-data-properties-base.ts new file mode 100644 index 00000000..750f5605 --- /dev/null +++ b/src/documents/item/item-data-properties-base.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export interface DS4ItemDataPropertiesDataRollable { + rollable: boolean; +} diff --git a/src/documents/item/item-data-properties.ts b/src/documents/item/item-data-properties.ts new file mode 100644 index 00000000..003593d5 --- /dev/null +++ b/src/documents/item/item-data-properties.ts @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4AlphabetDataProperties } from "./alphabet/alphabet-data-properties"; +import type { DS4ArmorDataProperties } from "./armor/armor-data-properties"; +import type { DS4EquipmentDataProperties } from "./equipment/equipment-data-properties"; +import type { DS4LanguageDataProperties } from "./language/language-data-properties"; +import type { DS4LootDataProperties } from "./loot/loot-data-properties"; +import type { DS4RacialAbilityDataProperties } from "./racial-ability/racial-ability-data-properties"; +import type { DS4ShieldDataProperties } from "./shield/shield-data-properties"; +import type { DS4SpecialCreatureAbilityDataProperties } from "./special-creature-ability/special-creature-ability-data-properties"; +import type { DS4SpellDataProperties } from "./spell/spell-data-properties"; +import type { DS4TalentDataProperties } from "./talent/talent-data-properties"; +import type { DS4WeaponDataProperties } from "./weapon/weapon-data-properties"; + +declare global { + interface DataConfig { + Item: DS4ItemDataProperties; + } +} + +export type DS4ItemDataProperties = + | DS4AlphabetDataProperties + | DS4ArmorDataProperties + | DS4EquipmentDataProperties + | DS4LanguageDataProperties + | DS4LootDataProperties + | DS4RacialAbilityDataProperties + | DS4ShieldDataProperties + | DS4SpecialCreatureAbilityDataProperties + | DS4SpellDataProperties + | DS4TalentDataProperties + | DS4WeaponDataProperties; diff --git a/src/documents/item/item-data-source-base.ts b/src/documents/item/item-data-source-base.ts new file mode 100644 index 00000000..4cf2b290 --- /dev/null +++ b/src/documents/item/item-data-source-base.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../config"; + +export interface DS4ItemDataSourceDataBase { + description: string; +} + +export interface DS4ItemDataSourceDataPhysical { + quantity: number; + price: number; + availability: keyof typeof DS4.i18n.itemAvailabilities; + storageLocation: string; +} + +export interface DS4ItemDataSourceDataEquipable { + equipped: boolean; +} + +export interface DS4ItemDataSourceDataProtective { + armorValue: number; +} diff --git a/src/documents/item/item-data-source.ts b/src/documents/item/item-data-source.ts new file mode 100644 index 00000000..418d1acc --- /dev/null +++ b/src/documents/item/item-data-source.ts @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../config"; +import type { DS4AlphabetDataSource } from "./alphabet/alphabet-data-source"; +import type { DS4ArmorDataSource } from "./armor/armor-data-source"; +import type { DS4EquipmentDataSource } from "./equipment/equipment-data-source"; +import type { DS4LanguageDataSource } from "./language/language-data-source"; +import type { DS4LootDataSource } from "./loot/loot-data-source"; +import type { DS4RacialAbilityDataSource } from "./racial-ability/racial-ability-data-source"; +import type { DS4ShieldDataSource } from "./shield/shield-data-source"; +import type { DS4SpecialCreatureAbilityDataSource } from "./special-creature-ability/special-creature-ability-data-source"; +import type { DS4SpellDataSource } from "./spell/spell-data-source"; +import type { DS4TalentDataSource } from "./talent/talent-data-source"; +import type { DS4WeaponDataSource } from "./weapon/weapon-data-source"; + +declare global { + interface SourceConfig { + Item: DS4ItemDataSource; + } +} + +export type ItemType = keyof typeof DS4.i18n.itemTypes; + +export type DS4ItemDataSource = + | DS4AlphabetDataSource + | DS4ArmorDataSource + | DS4EquipmentDataSource + | DS4LanguageDataSource + | DS4LootDataSource + | DS4RacialAbilityDataSource + | DS4ShieldDataSource + | DS4SpecialCreatureAbilityDataSource + | DS4SpellDataSource + | DS4TalentDataSource + | DS4WeaponDataSource; diff --git a/src/documents/item/item.js b/src/documents/item/item.js new file mode 100644 index 00000000..9d3d1ebb --- /dev/null +++ b/src/documents/item/item.js @@ -0,0 +1,57 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; + +/** + * The Item class for DS4 + */ +export class DS4Item extends Item { + /** + * An object that tracks the changes to the data model which were applied by active effects + * @type {Record} + */ + overrides = {}; + + /** @override */ + prepareDerivedData() { + this.system.rollable = false; + } + + /** + * Is this item a non-equipped equipable? + * @returns {boolean} Whether the item is a non-equpped equibale or not + */ + isNonEquippedEuipable() { + return "equipped" in this.system && !this.system.equipped; + } + + /** + * The number of times that active effect changes originating from this item should be applied. + * @returns {number | undefined} The number of times the effect should be applied + */ + get activeEffectFactor() { + return 1; + } + + /** + * The list of item types that are rollable. + * @returns {import("../item/item-data-source").ItemType[]} The rollable item types + */ + static get rollableItemTypes() { + return ["weapon", "spell"]; + } + + /** + * Roll a check for an action with this item. + * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll + * @returns {Promise} A promise that resolves once the roll has been performed + * @abstract + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async roll(options = {}) { + throw new Error(getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.type })); + } +} diff --git a/src/documents/item/language/language-data-properties.ts b/src/documents/item/language/language-data-properties.ts new file mode 100644 index 00000000..91a9dab0 --- /dev/null +++ b/src/documents/item/language/language-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4LanguageDataSourceData } from "./language-data-source"; + +export interface DS4LanguageDataProperties { + type: "language"; + data: DS4LanguageDataPropertiesData; +} + +interface DS4LanguageDataPropertiesData extends DS4LanguageDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/language/language-data-source.ts b/src/documents/item/language/language-data-source.ts new file mode 100644 index 00000000..48a3875c --- /dev/null +++ b/src/documents/item/language/language-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4LanguageDataSource { + type: "language"; + data: DS4LanguageDataSourceData; +} + +export type DS4LanguageDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/language/language.ts b/src/documents/item/language/language.ts new file mode 100644 index 00000000..2d8d45ec --- /dev/null +++ b/src/documents/item/language/language.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Language extends DS4Item {} diff --git a/src/documents/item/loot/loot-data-properties.ts b/src/documents/item/loot/loot-data-properties.ts new file mode 100644 index 00000000..900840f9 --- /dev/null +++ b/src/documents/item/loot/loot-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4LootDataSourceData } from "./loot-data-source"; + +export interface DS4LootDataProperties { + type: "loot"; + data: DS4LootDataPropertiesData; +} + +interface DS4LootDataPropertiesData extends DS4LootDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/loot/loot-data-source.ts b/src/documents/item/loot/loot-data-source.ts new file mode 100644 index 00000000..c09311c5 --- /dev/null +++ b/src/documents/item/loot/loot-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical } from "../item-data-source-base"; + +export interface DS4LootDataSource { + type: "loot"; + data: DS4LootDataSourceData; +} + +export interface DS4LootDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical {} diff --git a/src/documents/item/loot/loot.ts b/src/documents/item/loot/loot.ts new file mode 100644 index 00000000..ba90a2fd --- /dev/null +++ b/src/documents/item/loot/loot.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Loot extends DS4Item {} diff --git a/src/documents/item/proxy.js b/src/documents/item/proxy.js new file mode 100644 index 00000000..73e3f4a0 --- /dev/null +++ b/src/documents/item/proxy.js @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../../utils/utils"; +import { DS4Alphabet } from "./alphabet/alphabet"; +import { DS4Armor } from "./armor/armor"; +import { DS4Equipment } from "./equipment/equipment"; +import { DS4Item } from "./item"; +import { DS4Language } from "./language/language"; +import { DS4Loot } from "./loot/loot"; +import { DS4RacialAbility } from "./racial-ability/racial-ability"; +import { DS4Shield } from "./shield/shield"; +import { DS4SpecialCreatureAbility } from "./special-creature-ability/special-creature-ability"; +import { DS4Spell } from "./spell/spell"; +import { DS4Talent } from "./talent/talent"; +import { DS4Weapon } from "./weapon/weapon"; + +const handler = { + /** + * @param {typeof import("./item").DS4Item} + * @param {unknown[]} args + */ + construct(_, args) { + switch (args[0]?.type) { + case "alphabet": + return new DS4Alphabet(...args); + case "armor": + return new DS4Armor(...args); + case "equipment": + return new DS4Equipment(...args); + case "language": + return new DS4Language(...args); + case "loot": + return new DS4Loot(...args); + case "racialAbility": + return new DS4RacialAbility(...args); + case "shield": + return new DS4Shield(...args); + case "specialCreatureAbility": + return new DS4SpecialCreatureAbility(...args); + case "spell": + return new DS4Spell(...args); + case "talent": + return new DS4Talent(...args); + case "weapon": + return new DS4Weapon(...args); + default: + throw new Error(getGame().i18n.format("DS4.ErrorInvalidItemType", { type: args[0]?.type })); + } + }, +}; + +/** @type {typeof import("./item").DS4Item} */ +export const DS4ItemProxy = new Proxy(DS4Item, handler); diff --git a/src/documents/item/racial-ability/racial-ability-data-properties.ts b/src/documents/item/racial-ability/racial-ability-data-properties.ts new file mode 100644 index 00000000..89821df6 --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4RacialAbilityDataSourceData } from "./racial-ability-data-source"; + +export interface DS4RacialAbilityDataProperties { + type: "racialAbility"; + data: DS4RacialAbilityDataPropertiesData; +} + +interface DS4RacialAbilityDataPropertiesData + extends DS4RacialAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/racial-ability/racial-ability-data-source.ts b/src/documents/item/racial-ability/racial-ability-data-source.ts new file mode 100644 index 00000000..930cf5cd --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability-data-source.ts @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4RacialAbilityDataSource { + type: "racialAbility"; + data: DS4RacialAbilityDataSourceData; +} + +export type DS4RacialAbilityDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/racial-ability/racial-ability.ts b/src/documents/item/racial-ability/racial-ability.ts new file mode 100644 index 00000000..b3b360d9 --- /dev/null +++ b/src/documents/item/racial-ability/racial-ability.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4RacialAbility extends DS4Item {} diff --git a/src/documents/item/shield/shield-data-properties.ts b/src/documents/item/shield/shield-data-properties.ts new file mode 100644 index 00000000..a9040994 --- /dev/null +++ b/src/documents/item/shield/shield-data-properties.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4ShieldDataSourceData } from "./shield-data-source"; + +export interface DS4ShieldDataProperties { + type: "shield"; + data: DS4ShieldDataPropertiesData; +} + +interface DS4ShieldDataPropertiesData extends DS4ShieldDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/shield/shield-data-source.ts b/src/documents/item/shield/shield-data-source.ts new file mode 100644 index 00000000..42547a70 --- /dev/null +++ b/src/documents/item/shield/shield-data-source.ts @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataProtective, +} from "../item-data-source-base"; + +export interface DS4ShieldDataSource { + type: "shield"; + data: DS4ShieldDataSourceData; +} + +export interface DS4ShieldDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataProtective {} diff --git a/src/documents/item/shield/shield.ts b/src/documents/item/shield/shield.ts new file mode 100644 index 00000000..0da6a219 --- /dev/null +++ b/src/documents/item/shield/shield.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Shield extends DS4Item {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts new file mode 100644 index 00000000..6891e739 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4SpecialCreatureAbilityDataSourceData } from "./special-creature-ability-data-source"; + +export interface DS4SpecialCreatureAbilityDataProperties { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataPropertiesData; +} + +interface DS4SpecialCreatureAbilityDataPropertiesData + extends DS4SpecialCreatureAbilityDataSourceData, + DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts new file mode 100644 index 00000000..0a132b39 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4SpecialCreatureAbilityDataSource { + type: "specialCreatureAbility"; + data: DS4SpecialCreatureAbilityDataSourceData; +} + +export interface DS4SpecialCreatureAbilityDataSourceData extends DS4ItemDataSourceDataBase { + experiencePoints: number; +} diff --git a/src/documents/item/special-creature-ability/special-creature-ability.ts b/src/documents/item/special-creature-ability/special-creature-ability.ts new file mode 100644 index 00000000..57e90988 --- /dev/null +++ b/src/documents/item/special-creature-ability/special-creature-ability.ts @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4SpecialCreatureAbility extends DS4Item {} diff --git a/src/documents/item/spell/calculate-spell-price.ts b/src/documents/item/spell/calculate-spell-price.ts new file mode 100644 index 00000000..019d3f84 --- /dev/null +++ b/src/documents/item/spell/calculate-spell-price.ts @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { CooldownDuration, DS4SpellDataSourceData } from "./spell-data-source"; + +export function calculateSpellPrice(data: DS4SpellDataSourceData): number | null { + const spellPriceFactor = calculateSpellPriceFactor(data.cooldownDuration); + const baseSpellPrices = [ + data.minimumLevels.healer !== null ? 10 + (data.minimumLevels.healer - 1) * 35 : null, + data.minimumLevels.wizard !== null ? 10 + (data.minimumLevels.wizard - 1) * 50 : null, + data.minimumLevels.sorcerer !== null ? 10 + (data.minimumLevels.sorcerer - 1) * 65 : null, + ].filter((baseSpellPrice: number | null): baseSpellPrice is number => baseSpellPrice !== null); + const baseSpellPrice = Math.min(...baseSpellPrices); + return baseSpellPrice === Infinity ? null : baseSpellPrice * spellPriceFactor; +} + +function calculateSpellPriceFactor(cooldownDuration: CooldownDuration): number { + switch (cooldownDuration) { + case "0r": + case "1r": + case "2r": + case "5r": + case "10r": + case "100r": + return 1; + case "1d": + return 2; + case "d20d": + return 3; + } +} diff --git a/src/documents/item/spell/spell-data-properties.ts b/src/documents/item/spell/spell-data-properties.ts new file mode 100644 index 00000000..2c807608 --- /dev/null +++ b/src/documents/item/spell/spell-data-properties.ts @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4SpellDataSourceData } from "./spell-data-source"; + +export interface DS4SpellDataProperties { + type: "spell"; + data: DS4SpellDataPropertiesData; +} + +interface DS4SpellDataPropertiesData extends DS4SpellDataSourceData, DS4ItemDataPropertiesDataRollable { + price: number | null; + opponentDefense?: number; +} diff --git a/src/documents/item/spell/spell-data-source.ts b/src/documents/item/spell/spell-data-source.ts new file mode 100644 index 00000000..1b88c78f --- /dev/null +++ b/src/documents/item/spell/spell-data-source.ts @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable } from "../item-data-source-base"; + +export interface DS4SpellDataSource { + type: "spell"; + data: DS4SpellDataSourceData; +} + +export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable { + spellType: keyof typeof DS4.i18n.spellTypes; + spellModifier: { + numerical: number; + complex: string; + }; + allowsDefense: boolean; + spellGroups: Record; + maxDistance: UnitData; + effectRadius: UnitData; + duration: UnitData; + cooldownDuration: CooldownDuration; + minimumLevels: { + healer: number | null; + wizard: number | null; + sorcerer: number | null; + }; +} + +export interface UnitData { + value: string; + unit: UnitType; +} + +type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; +type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; +export type CooldownDuration = keyof typeof DS4.i18n.cooldownDurations; diff --git a/src/documents/item/spell/spell.js b/src/documents/item/spell/spell.js new file mode 100644 index 00000000..c94d8ba3 --- /dev/null +++ b/src/documents/item/spell/spell.js @@ -0,0 +1,84 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { createCheckRoll } from "../../../dice/check-factory"; +import { notifications } from "../../../ui/notifications"; +import { getGame } from "../../../utils/utils"; +import { DS4Item } from "../item"; +import { calculateSpellPrice } from "./calculate-spell-price"; + +export class DS4Spell extends DS4Item { + /** @override */ + prepareDerivedData() { + this.system.rollable = this.system.equipped; + this.system.price = calculateSpellPrice(this.system); + if (this.system.allowsDefense) { + this.system.opponentDefense = 0; + } + } + + /** @override */ + async roll(options = {}) { + const game = getGame(); + + if (!this.system.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.type, + }), + ); + } + + if (!this.actor) { + throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerSystemData = this.actor.system; + const hasComplexModifier = this.system.spellModifier.complex !== ""; + if (hasComplexModifier === undefined) { + notifications.info( + game.i18n.format("DS4.InfoManuallyEnterSpellModifier", { + name: this.name, + spellModifier: this.system.spellModifier.complex, + }), + ); + } + const spellType = this.system.spellType; + const opponentDefense = this.system.opponentDefense; + const checkTargetNumber = + ownerSystemData.combatValues[spellType].total + (hasComplexModifier ? 0 : this.system.spellModifier.numerical); + const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); + const flavor = + opponentDefense !== undefined && opponentDefense !== 0 + ? "DS4.ItemSpellCheckFlavorWithOpponentDefense" + : "DS4.ItemSpellCheckFlavor"; + /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ + const flavorData = { + actor: speaker.alias ?? this.actor.name, + spell: this.name, + }; + if (opponentDefense !== undefined && opponentDefense !== 0) { + flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; + } + + await createCheckRoll(checkTargetNumber, { + rollMode: game.settings.get("core", "rollMode"), + maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, + minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, + flavor: flavor, + flavorData: flavorData, + speaker, + }); + + /** + * A hook event that fires after an item is rolled. + * @function ds4.rollItem + * @memberof hookEvents + * @param {DS4Item} item Item being rolled. + */ + Hooks.callAll("ds4.rollItem", this); + } +} diff --git a/src/documents/item/talent/talent-data-properties.ts b/src/documents/item/talent/talent-data-properties.ts new file mode 100644 index 00000000..a2449957 --- /dev/null +++ b/src/documents/item/talent/talent-data-properties.ts @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { ModifiableDataBaseTotalMax } from "../../common/common-data"; +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4TalentDataSourceData } from "./talent-data-source"; + +export interface DS4TalentDataProperties { + type: "talent"; + data: DS4TalentDataPropertiesData; +} + +interface DS4TalentDataPropertiesData extends DS4TalentDataSourceData, DS4ItemDataPropertiesDataRollable { + rank: ModifiableDataBaseTotalMax; +} diff --git a/src/documents/item/talent/talent-data-source.ts b/src/documents/item/talent/talent-data-source.ts new file mode 100644 index 00000000..65e34d36 --- /dev/null +++ b/src/documents/item/talent/talent-data-source.ts @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { ModifiableDataBaseMax } from "../../common/common-data"; +import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; + +export interface DS4TalentDataSource { + type: "talent"; + data: DS4TalentDataSourceData; +} + +export interface DS4TalentDataSourceData extends DS4ItemDataSourceDataBase { + rank: ModifiableDataBaseMax; +} diff --git a/src/documents/item/talent/talent.js b/src/documents/item/talent/talent.js new file mode 100644 index 00000000..9f7a5acc --- /dev/null +++ b/src/documents/item/talent/talent.js @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../item"; + +export class DS4Talent extends DS4Item { + /** @override */ + prepareDerivedData() { + super.prepareDerivedData(); + this.system.rank.total = this.system.rank.base + this.system.rank.mod; + } + + /** @override */ + get activeEffectFactor() { + return this.system.rank.total; + } +} diff --git a/src/documents/item/weapon/weapon-data-properties.ts b/src/documents/item/weapon/weapon-data-properties.ts new file mode 100644 index 00000000..6847b7e4 --- /dev/null +++ b/src/documents/item/weapon/weapon-data-properties.ts @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; +import type { DS4WeaponDataSourceData } from "./weapon-data-source"; + +interface DS4WeaponDataPropertiesData extends DS4WeaponDataSourceData, DS4ItemDataPropertiesDataRollable { + opponentDefenseForAttackType: { + melee?: number; + ranged?: number; + }; +} + +export interface DS4WeaponDataProperties { + type: "weapon"; + data: DS4WeaponDataPropertiesData; +} diff --git a/src/documents/item/weapon/weapon-data-source.ts b/src/documents/item/weapon/weapon-data-source.ts new file mode 100644 index 00000000..33ccf16c --- /dev/null +++ b/src/documents/item/weapon/weapon-data-source.ts @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { DS4 } from "../../../config"; +import type { + DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataEquipable, + DS4ItemDataSourceDataPhysical, +} from "../item-data-source-base"; + +export interface DS4WeaponDataSource { + type: "weapon"; + data: DS4WeaponDataSourceData; +} + +export interface DS4WeaponDataSourceData + extends DS4ItemDataSourceDataBase, + DS4ItemDataSourceDataPhysical, + DS4ItemDataSourceDataEquipable { + attackType: AttackType; + weaponBonus: number; + opponentDefense: number; +} + +export type AttackType = keyof typeof DS4.i18n.attackTypes; diff --git a/src/documents/item/weapon/weapon.js b/src/documents/item/weapon/weapon.js new file mode 100644 index 00000000..09a734d0 --- /dev/null +++ b/src/documents/item/weapon/weapon.js @@ -0,0 +1,112 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../../../config"; +import { createCheckRoll } from "../../../dice/check-factory"; +import { notifications } from "../../../ui/notifications"; +import { getGame } from "../../../utils/utils"; +import { DS4Item } from "../item"; + +export class DS4Weapon extends DS4Item { + /** @override */ + prepareDerivedData() { + const system = this.system; + system.rollable = system.equipped; + system.opponentDefenseForAttackType = {}; + if (system.attackType === "melee" || system.attackType === "meleeRanged") { + system.opponentDefenseForAttackType.melee = system.opponentDefense; + } + if (system.attackType === "ranged" || system.attackType === "meleeRanged") { + system.opponentDefenseForAttackType.ranged = system.opponentDefense; + } + } + + /** @override */ + async roll(options = {}) { + const game = getGame(); + if (!this.system.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.type, + }), + ); + } + + if (!this.actor) { + throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + const ownerSystemData = this.actor.system; + const weaponBonus = this.system.weaponBonus; + const attackType = await this.getPerformedAttackType(); + const opponentDefense = this.system.opponentDefenseForAttackType[attackType]; + const combatValue = `${attackType}Attack`; + const checkTargetNumber = ownerSystemData.combatValues[combatValue].total + weaponBonus; + const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); + const flavor = + opponentDefense !== undefined && opponentDefense !== 0 + ? "DS4.ItemWeaponCheckFlavorWithOpponentDefense" + : "DS4.ItemWeaponCheckFlavor"; + /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ + const flavorData = { + actor: speaker.alias ?? this.actor.name, + weapon: this.name, + }; + if (opponentDefense !== undefined && opponentDefense !== 0) { + flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; + } + + await createCheckRoll(checkTargetNumber, { + rollMode: getGame().settings.get("core", "rollMode"), + maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, + minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, + speaker, + flavor, + flavorData, + }); + + Hooks.callAll("ds4.rollItem", this); + } + + /** + * Get the attack type to perform with this weapon. If there are multiple options prompt the user for a choice. + * @returns {Promise<"melee" | "ranged">} The attack type to perform + * @protected + */ + async getPerformedAttackType() { + if (this.system.attackType !== "meleeRanged") { + return this.system.attackType; + } + + const { melee, ranged } = { ...DS4.i18n.attackTypes }; + const identifier = `attack-type-selection-${foundry.utils.randomID()}`; + return Dialog.prompt({ + title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"), + content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { + selects: [ + { + label: getGame().i18n.localize("DS4.AttackType"), + identifier, + options: { melee, ranged }, + }, + ], + }), + label: getGame().i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + const selectedAttackType = html.find(`#${identifier}`).val(); + if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { + throw new Error( + getGame().i18n.format("DS4.ErrorUnexpectedAttackType", { + actualType: selectedAttackType, + expectedTypes: "'melee', 'ranged'", + }), + ); + } + return selectedAttackType; + }, + }); + } +} diff --git a/src/documents/token-document.js b/src/documents/token-document.js new file mode 100644 index 00000000..efa26eb7 --- /dev/null +++ b/src/documents/token-document.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "../utils/utils"; +import { DS4ActorProxy } from "./actor/proxy"; + +/** @type {object | undefined} */ +let fallbackData = undefined; + +function getFallbackData() { + if (!fallbackData) { + fallbackData = {}; + for (const type of getGame().system.template.Actor?.types ?? []) { + foundry.utils.mergeObject(fallbackData, new DS4ActorProxy({ type, name: "temporary" }).system); + } + } + return fallbackData; +} + +export class DS4TokenDocument extends TokenDocument { + static getTrackedAttributes(data, _path = []) { + if (!data) { + data = getFallbackData(); + } + return super.getTrackedAttributes(data, _path); + } +} diff --git a/src/ds4.scss b/src/ds4.scss deleted file mode 100644 index af018bb7..00000000 --- a/src/ds4.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Import utilities. -@import "scss/utils/typography"; -@import "scss/utils/colors"; -@import "scss/utils/mixins"; -@import "scss/utils/variables"; - -/* Global styles */ -@import "scss/global/window"; -@import "scss/global/grid"; -@import "scss/global/flex"; -@import "scss/global/accessibility"; - -/* Styles limited to ds4 sheets */ -.ds4 { - @import "scss/components/apps"; - @import "scss/components/forms"; - @import "scss/components/basic_property"; - @import "scss/components/tabs"; - @import "scss/components/items"; - @import "scss/components/talents"; - @import "scss/components/description"; - @import "scss/components/character_values"; - @import "scss/components/attributes_traits"; - @import "scss/components/combat_values"; - @import "scss/components/character_progression"; -} diff --git a/src/ds4.ts b/src/ds4.ts new file mode 100644 index 00000000..25364a54 --- /dev/null +++ b/src/ds4.ts @@ -0,0 +1,9 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import "../scss/ds4.scss"; + +import { registerForHooks } from "./hooks/hooks"; + +registerForHooks(); diff --git a/src/expression-evaluation/evaluator.ts b/src/expression-evaluation/evaluator.ts new file mode 100644 index 00000000..2cc9409a --- /dev/null +++ b/src/expression-evaluation/evaluator.ts @@ -0,0 +1,38 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { Validator } from "./validator"; + +export class Evaluator { + context?: Context; + validator: Validator; + + constructor({ + context, + predicate = Validator.defaultPredicate, + }: { context?: Context; predicate?: (identifier: string) => boolean } = {}) { + let actualPredicate = predicate; + if (context) { + this.context = new Proxy(context, { + has: () => true, + get: (t, k) => (k === Symbol.unscopables ? undefined : t[k as keyof typeof t]), + }); + actualPredicate = (identifier: string) => + predicate(identifier) || Object.getOwnPropertyNames(context).includes(identifier); + } + this.validator = new Validator(actualPredicate); + } + + evaluate(expression: string): unknown { + this.validator.validate(expression); + + const body = `with (sandbox) { return ${expression}; }`; + const evaluate = new Function("sandbox", body); + return evaluate(this.context ?? {}); + } +} + +export const defaultEvaluator = new Evaluator(); + +export const mathEvaluator = new Evaluator({ context: Math }); diff --git a/src/expression-evaluation/grammar.ts b/src/expression-evaluation/grammar.ts new file mode 100644 index 00000000..65d5cd4c --- /dev/null +++ b/src/expression-evaluation/grammar.ts @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export type Token = TokenWithSymbol | TokenWithoutSymbol; + +export interface TokenWithSymbol { + type: TypeWithSymbol; + symbol: string; + pos: number; +} + +interface TokenWithoutSymbol { + type: TypeWithoutSymbol; + pos: number; +} + +type TypeWithSymbol = "iden" | "number" | "string"; + +type TypeWithoutSymbol = + | "+" + | "-" + | "*" + | "**" + | "/" + | "%" + | "===" + | "!==" + | "==" + | "!=" + | "<" + | "<=" + | ">" + | ">=" + | "&&" + | "||" + | "&" + | "|" + | "~" + | "^" + | "<<" + | ">>" + | ">>>" + | "." + | "?." + | "??" + | "!" + | "?" + | ":" + | "(" + | ")" + | "[" + | "]" + | "," + | "{" + | "}" + | "invalid" + | "eof"; + +export const literals = ["true", "false", "null", "undefined"]; +export const safeOperators = ["in", "instanceof", "typeof", "void"]; diff --git a/src/expression-evaluation/lexer.ts b/src/expression-evaluation/lexer.ts new file mode 100644 index 00000000..d3476c6f --- /dev/null +++ b/src/expression-evaluation/lexer.ts @@ -0,0 +1,261 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import type { Token } from "./grammar"; + +export class Lexer { + constructor(private readonly input: string) {} + + *[Symbol.iterator](): Generator { + let pos = 0; + while (true) { + if (this.isWhiteSpace(this.input[pos])) { + pos += 1; + continue; + } + const [token, newPos] = this.getNextToken(pos); + pos = newPos; + yield token; + if (token.type === "eof" || token.type === "invalid") { + break; + } + } + } + + private getNextToken(pos: number): [Token, number] { + const current = this.input[pos]; + + if (current === undefined) { + return [{ type: "eof", pos }, pos]; + } + if (this.isOperatorStart(current)) { + return this.getOperator(pos); + } + if (this.isDigit(current)) { + return this.getNumber(pos); + } + if (current === "'" || current === '"' || current === "`") { + return this.getString(pos); + } + if (current === ".") { + const next = this.input[pos + 1]; + if (this.isDigit(next)) { + return this.getNumber(pos); + } + return this.getOperator(pos); + } + if (this.isIdentifierStart(current)) { + return this.getIdentifier(pos); + } + return [{ type: "invalid", pos }, pos]; + } + + private isOperatorStart(char: string) { + const operatorStartChars: (string | undefined)[] = [ + "+", + "-", + "*", + "/", + "%", + "=", + "!", + ">", + "<", + "&", + "|", + "~", + "^", + "?", + ":", + "!", + ",", + "(", + ")", + "[", + "]", + "{", + "}", + ]; + return operatorStartChars.includes(char[0]); + } + + private getOperator(pos: number): [Token, number] { + const current = this.input[pos]; + const next = this.input[pos + 1]; + const nextButOne = this.input[pos + 2]; + switch (current) { + case "+": + case "-": + case "/": + case "%": + case "~": + case "^": + case ".": + case ":": + case ",": + case "(": + case ")": + case "[": + case "]": + case "{": + case "}": { + return [{ type: current, pos }, pos + 1]; + } + case "*": { + if (next === "*") { + return [{ type: "**", pos }, pos + 2]; + } + return [{ type: "*", pos }, pos + 1]; + } + case "=": { + if (next === "=") { + if (nextButOne === "=") { + return [{ type: "===", pos }, pos + 3]; + } + return [{ type: "==", pos }, pos + 2]; + } + return [{ type: "invalid", pos }, pos]; + } + case "!": { + if (next === "=") { + if (nextButOne === "=") { + return [{ type: "!==", pos }, pos + 3]; + } + return [{ type: "!=", pos }, pos + 2]; + } + return [{ type: "!", pos }, pos + 1]; + } + case ">": { + switch (next) { + case ">": { + if (nextButOne === ">") { + return [{ type: ">>>", pos }, pos + 3]; + } + return [{ type: ">>", pos }, pos + 2]; + } + case "=": { + return [{ type: ">=", pos }, pos + 2]; + } + default: { + return [{ type: ">", pos }, pos + 1]; + } + } + } + case "<": { + switch (next) { + case "=": { + return [{ type: "<=", pos }, pos + 2]; + } + case "<": { + return [{ type: "<<", pos }, pos + 2]; + } + default: { + return [{ type: "<", pos }, pos + 1]; + } + } + } + case "&": { + if (next === "&") { + return [{ type: "&&", pos }, pos + 2]; + } + return [{ type: "&", pos }, pos + 1]; + } + case "|": { + if (next === "|") { + return [{ type: "||", pos }, pos + 2]; + } + return [{ type: "|", pos }, pos + 1]; + } + case "?": { + switch (next) { + case ".": { + return [{ type: "?.", pos }, pos + 2]; + } + case "?": { + return [{ type: "??", pos }, pos + 2]; + } + default: { + return [{ type: "?", pos }, pos + 1]; + } + } + } + } + return [{ type: "invalid", pos }, pos]; + } + + private isDigit(char: string | undefined): char is `${number}` { + return /\d/.test(char?.[0] ?? ""); + } + + private getNumber(pos: number): [Token, number] { + let endPos = pos; + let foundDot = false; + let only0s = false; + while ( + this.isDigit(this.input[endPos]) || + this.input[endPos] === "." || + (this.input[endPos] === "_" && endPos > pos) + ) { + if (this.input[endPos] === ".") { + if (foundDot) { + return [{ type: "invalid", pos }, pos]; + } + foundDot = true; + } + if (this.input[endPos] === "0") { + only0s = endPos === pos ? true : only0s; + } + + if (this.input[endPos] === "_" && (this.input[endPos - 1] === "_" || this.input[endPos - 1] === "." || only0s)) { + return [{ type: "invalid", pos }, pos]; + } + + endPos += 1; + } + if (pos === endPos) { + return [{ type: "invalid", pos }, pos]; + } + if (this.input[endPos - 1] === "_") { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "number", symbol: this.input.slice(pos, endPos), pos }, endPos]; + } + + private isIdentifierStart(char: string | undefined) { + return /[$_\p{ID_Start}]/u.test(char?.[0] ?? ""); + } + + private isIdentifier(char: string | undefined) { + return /[$\u200c\u200d\p{ID_Continue}]/u.test(char?.[0] ?? ""); + } + + private getIdentifier(pos: number): [Token, number] { + let endPos = pos; + while (endPos < this.input.length && this.isIdentifier(this.input[endPos])) { + endPos += 1; + } + if (endPos === pos) { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "iden", symbol: this.input.slice(pos, endPos), pos }, endPos]; + } + + private getString(pos: number): [Token, number] { + const quote = this.input[pos]; + let endPos = pos + 1; + let prev = this.input[pos]; + while (endPos < this.input.length && (this.input[endPos] !== quote || prev === "\\")) { + prev = this.input[endPos]; + endPos += 1; + } + if (endPos === pos || this.input[endPos] !== quote) { + return [{ type: "invalid", pos }, pos]; + } + return [{ type: "string", symbol: this.input.slice(pos, endPos + 1), pos }, endPos + 1]; + } + + private isWhiteSpace(char: string | undefined) { + return /\s/.test(char?.[0] ?? ""); + } +} diff --git a/src/expression-evaluation/validator.ts b/src/expression-evaluation/validator.ts new file mode 100644 index 00000000..89e1064a --- /dev/null +++ b/src/expression-evaluation/validator.ts @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { literals, safeOperators } from "./grammar"; +import { Lexer } from "./lexer"; + +export class Validator { + constructor(private readonly predicate: (identifier: string) => boolean = Validator.defaultPredicate) {} + + static readonly defaultPredicate = (identifier: string) => [...literals, ...safeOperators].includes(identifier); + + public validate(input: string): void { + const lexer = new Lexer(input); + for (const token of lexer) { + if (token.type === "iden" && !this.predicate(token.symbol)) { + throw new ValidationError(token.symbol); + } + if (token.type === "invalid") { + throw new SyntaxError(`Invalid or unexpected token (${token.pos})`); + } + } + } +} + +class ValidationError extends Error { + constructor(identifier: string) { + super(`'${identifier}' is not an allowed identifier.`); + } +} diff --git a/src/fonts/Woodstamp.otf b/src/fonts/Woodstamp.otf deleted file mode 100644 index c206d9d4..00000000 Binary files a/src/fonts/Woodstamp.otf and /dev/null differ diff --git a/src/handlebars/handlebars-helpers.ts b/src/handlebars/handlebars-helpers.ts new file mode 100644 index 00000000..015064a4 --- /dev/null +++ b/src/handlebars/handlebars-helpers.ts @@ -0,0 +1,70 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export function registerHandlebarsHelpers(): void { + Handlebars.registerHelper(helpers); +} + +const helpers = { + htmlToPlainText: (input: string | null | undefined): string | null | undefined => { + if (!input) return; + return $(input).text(); + }, + + isEmpty: (input: Array | null | undefined): boolean => (input?.length ?? 0) === 0, + + toRomanNumerals, +}; + +function toRomanNumerals(number: number): string { + return [...generateRomanNumerals(number, 0)].join(""); +} + +function* generateRomanNumerals(number: number, numeralIndex: number): Generator { + if (number === 0) return; + const currentNumeral = numerals[numeralIndex]; + if (currentNumeral === undefined) return; + + const quotient = number / currentNumeral; + const remainder = number % currentNumeral; + const numberAsNumerals = numeralLookup[currentNumeral].repeat(quotient); + + yield numberAsNumerals; + yield* generateRomanNumerals(remainder, numeralIndex + 1); +} + +const numeralLookup = { + 1: "I", + 2: "II", + 3: "III", + 4: "IV", + 5: "V", + 6: "VI", + 7: "VII", + 8: "VIII", + 9: "IX", + 10: "X", + 20: "XX", + 30: "XXX", + 40: "XL", + 50: "L", + 60: "LX", + 70: "LXX", + 80: "LXXX", + 90: "XC", + 100: "C", + 200: "CC", + 300: "CCC", + 400: "CD", + 500: "D", + 600: "DC", + 700: "DCC", + 800: "DCCC", + 900: "CM", + 1000: "M", +}; + +const numerals = [ + 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, +] as const; diff --git a/src/handlebars/handlebars-partials.js b/src/handlebars/handlebars-partials.js new file mode 100644 index 00000000..747c13c4 --- /dev/null +++ b/src/handlebars/handlebars-partials.js @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +/** + * Register the Handlebars partials for DS4. + * @returns {Promise} A promise that resolves once all partials have been registered + */ +export async function registerHandlebarsPartials() { + const templatePaths = [ + "systems/ds4/templates/sheets/actor/components/actor-header.hbs", + "systems/ds4/templates/sheets/actor/components/actor-progression.hbs", + "systems/ds4/templates/sheets/actor/components/biography.hbs", + "systems/ds4/templates/sheets/actor/components/character-properties.hbs", + "systems/ds4/templates/sheets/actor/components/check.hbs", + "systems/ds4/templates/sheets/actor/components/checks.hbs", + "systems/ds4/templates/sheets/actor/components/combat-value.hbs", + "systems/ds4/templates/sheets/actor/components/combat-values.hbs", + "systems/ds4/templates/sheets/actor/components/core-value.hbs", + "systems/ds4/templates/sheets/actor/components/core-values.hbs", + "systems/ds4/templates/sheets/actor/components/creature-properties.hbs", + "systems/ds4/templates/sheets/actor/components/currency.hbs", + "systems/ds4/templates/sheets/actor/components/description.hbs", + "systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs", + "systems/ds4/templates/sheets/actor/components/effect-list-header.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-entry.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-header.hbs", + "systems/ds4/templates/sheets/actor/components/items-overview.hbs", + "systems/ds4/templates/sheets/actor/components/profile.hbs", + "systems/ds4/templates/sheets/actor/tabs/biography.hbs", + "systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/description.hbs", + "systems/ds4/templates/sheets/actor/tabs/effects.hbs", + "systems/ds4/templates/sheets/actor/tabs/spells.hbs", + "systems/ds4/templates/sheets/actor/tabs/values.hbs", + "systems/ds4/templates/sheets/item/components/effect-list-entry.hbs", + "systems/ds4/templates/sheets/item/components/effect-list-header.hbs", + "systems/ds4/templates/sheets/item/components/item-header.hbs", + "systems/ds4/templates/sheets/item/components/properties/armor.hbs", + "systems/ds4/templates/sheets/item/components/properties/equipable.hbs", + "systems/ds4/templates/sheets/item/components/properties/physical.hbs", + "systems/ds4/templates/sheets/item/components/properties/protective.hbs", + "systems/ds4/templates/sheets/item/components/properties/talent.hbs", + "systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs", + "systems/ds4/templates/sheets/item/components/properties/spell.hbs", + "systems/ds4/templates/sheets/item/components/properties/weapon.hbs", + "systems/ds4/templates/sheets/item/tabs/description.hbs", + "systems/ds4/templates/sheets/item/tabs/effects.hbs", + "systems/ds4/templates/sheets/item/tabs/properties.hbs", + "systems/ds4/templates/sheets/shared/components/add-button.hbs", + "systems/ds4/templates/sheets/shared/components/control-button-group.hbs", + "systems/ds4/templates/sheets/shared/components/rollable-image.hbs", + ]; + await loadTemplates(templatePaths); +} diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts new file mode 100644 index 00000000..b69fbb1f --- /dev/null +++ b/src/hooks/hooks.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { registerForHotbarDropHook } from "./hotbar-drop"; +import { registerForInitHook } from "./init"; +import { registerForPreCreateItemHook } from "./pre-create-item"; +import { registerForReadyHook } from "./ready"; +import { registerForRenderHooks } from "./render"; +import { registerForSetupHook } from "./setup"; + +export function registerForHooks(): void { + registerForHotbarDropHook(); + registerForPreCreateItemHook(); + registerForInitHook(); + registerForReadyHook(); + registerForRenderHooks(); + registerForSetupHook(); +} diff --git a/src/hooks/hotbar-drop.js b/src/hooks/hotbar-drop.js new file mode 100644 index 00000000..3d6957db --- /dev/null +++ b/src/hooks/hotbar-drop.js @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { createRollCheckMacro } from "../macros/roll-check"; +import { createRollItemMacro } from "../macros/roll-item"; + +export function registerForHotbarDropHook() { + Hooks.on("hotbarDrop", onHotbarDrop); +} + +/** + * @typedef {Record} DropData + * @property {string} type + */ + +/** + * Handle a drop event on the hotbar + * @param {Hotbar} hotbar The hotbar on which something wqas + * @param {DropData} data The drop data associated to the drop event + * @param {string} slot The slot on the hotbar that somethingwas dropped on + * @returns {void | false} + */ +function onHotbarDrop(hotbar, data, slot) { + switch (data.type) { + case "Item": { + createRollItemMacro(data, slot); + return false; + } + case "Check": { + createRollCheckMacro(data, slot); + return false; + } + } +} diff --git a/src/hooks/init.js b/src/hooks/init.js new file mode 100644 index 00000000..199b32bd --- /dev/null +++ b/src/hooks/init.js @@ -0,0 +1,82 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +import { DS4ActiveEffectConfig } from "../apps/active-effect-config"; +import { DS4CharacterActorSheet } from "../apps/actor/character-sheet"; +import { DS4CreatureActorSheet } from "../apps/actor/creature-sheet"; +import { DS4ItemSheet } from "../apps/item-sheet"; +import { DS4 } from "../config"; +import { DS4Check } from "../dice/check"; +import { createCheckRoll } from "../dice/check-factory"; +import { DS4Roll } from "../dice/roll"; +import { registerSlayingDiceModifier } from "../dice/slaying-dice-modifier"; +import { DS4ActiveEffect } from "../documents/active-effect"; +import { DS4ActorProxy } from "../documents/actor/proxy"; +import { DS4ChatMessage } from "../documents/chat-message"; +import { DS4ItemProxy } from "../documents/item/proxy"; +import { DS4TokenDocument } from "../documents/token-document"; +import { registerHandlebarsHelpers } from "../handlebars/handlebars-helpers"; +import { registerHandlebarsPartials } from "../handlebars/handlebars-partials"; +import { macros } from "../macros/macros"; +import { migration } from "../migration/migration"; +import { registerSystemSettings } from "../settings"; +import { preloadFonts } from "../ui/fonts"; +import { logger } from "../utils/logger"; +import { getGame } from "../utils/utils"; + +export function registerForInitHook() { + Hooks.once("init", init); +} + +async function init() { + logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`); + + getGame().ds4 = { + DS4Actor: DS4ActorProxy, + DS4Item: DS4ItemProxy, + DS4, + createCheckRoll, + migration, + macros, + }; + + CONFIG.DS4 = DS4; + + CONFIG.Actor.documentClass = DS4ActorProxy; + CONFIG.Item.documentClass = DS4ItemProxy; + CONFIG.ActiveEffect.documentClass = DS4ActiveEffect; + CONFIG.ChatMessage.documentClass = DS4ChatMessage; + CONFIG.Token.documentClass = DS4TokenDocument; + + CONFIG.ActiveEffect.legacyTransferral = false; + + CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; + CONFIG.Item.typeLabels = DS4.i18n.itemTypes; + + CONFIG.Dice.types.push(DS4Check); + CONFIG.Dice.terms.s = DS4Check; + + CONFIG.Dice.rolls.unshift(DS4Roll); + + registerSlayingDiceModifier(); + + registerSystemSettings(); + + DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet); + DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CharacterActorSheet, { + types: ["character"], + makeDefault: true, + }); + DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); + DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet); + DocumentSheetConfig.registerSheet(Item, "ds4", DS4ItemSheet, { makeDefault: true }); + DocumentSheetConfig.unregisterSheet(ActiveEffect, "core", ActiveEffectConfig); + DocumentSheetConfig.registerSheet(ActiveEffect, "ds4", DS4ActiveEffectConfig, { makeDefault: true }); + + preloadFonts(); + await registerHandlebarsPartials(); + registerHandlebarsHelpers(); +} diff --git a/src/hooks/pre-create-item.js b/src/hooks/pre-create-item.js new file mode 100644 index 00000000..545bd540 --- /dev/null +++ b/src/hooks/pre-create-item.js @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { getGame } from "../utils/utils.js"; + +export function registerForPreCreateItemHook() { + Hooks.on("preCreateItem", preCreateItem); +} + +/** + * @param {import('../documents/item/item.js').DS4Item} item + * @returns {void | false} + */ +function preCreateItem(item) { + if (item.parent instanceof Actor && !item.parent.canOwnItemType(item.type)) { + notifications.warn( + getGame().i18n.format("DS4.WarningActorCannotOwnItem", { + actorName: item.actor.name, + actorType: item.actor.type, + itemName: item.name, + itemType: item.type, + }), + ); + return false; + } +} diff --git a/src/hooks/ready.js b/src/hooks/ready.js new file mode 100644 index 00000000..50922bf9 --- /dev/null +++ b/src/hooks/ready.js @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { migration } from "../migration/migration"; + +export function registerForReadyHook() { + Hooks.once("ready", () => { + migration.migrate(); + }); +} diff --git a/src/hooks/render.js b/src/hooks/render.js new file mode 100644 index 00000000..c8028dbf --- /dev/null +++ b/src/hooks/render.js @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// +// SPDX-License-Identifier: MIT + +/** + * @remarks The render hooks of all classes in the class hierarchy are called, so e.g. for a {@link Dialog}, both the + * "renderDialog" hook and the "renderApplication" hook are called (in this order). + */ +export function registerForRenderHooks() { + ["renderApplication", "renderActorSheet", "renderItemSheet"].forEach((hook) => { + Hooks.on(hook, selectTargetInputOnFocus); + }); +} + +/** + * Select the text of input elements in given application when focused via an on focus listener. + * + * @param {Application} app The application in which to activate the listener. + * @param {JQuery} html The {@link JQuery} representing the HTML of the application. + */ +function selectTargetInputOnFocus(app, html) { + html.find("input").on("focus", (ev) => { + ev.currentTarget.select(); + }); +} diff --git a/src/hooks/setup.js b/src/hooks/setup.js new file mode 100644 index 00000000..bcb7f540 --- /dev/null +++ b/src/hooks/setup.js @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// SPDX-FileCopyrightText: 2021 Oliver Rümpelein +// SPDX-FileCopyrightText: 2021 Gesina Schwalbe +// SPDX-FileCopyrightText: 2021 Siegfried Krug +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { getGame } from "../utils/utils"; + +export function registerForSetupHook() { + Hooks.once("setup", () => { + localizeAndSortConfigObjects(); + }); +} + +/** + * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. + */ +function localizeAndSortConfigObjects() { + const noSort = [ + "attributes", + "combatValues", + "cooldownDurations", + "creatureSizeCategories", + "spellGroups", + "traits", + "checkModifiers", + ]; + + /** + * @template {Record} T + * @param {T} obj The object to localize + * @param {boolean} [sort=true] whether or not to sort the object + * @returns {T} the localized object + */ + const localizeObject = (obj, sort = true) => { + const localized = Object.entries(obj).map(([key, value]) => { + return [key, getGame().i18n.localize(value)]; + }); + if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); + return Object.fromEntries(localized); + }; + + DS4.i18n = Object.fromEntries( + Object.entries(DS4.i18n).map(([key, value]) => { + return [key, localizeObject(value, !noSort.includes(key))]; + }), + ); +} diff --git a/src/lang/de.json b/src/lang/de.json deleted file mode 100644 index 59146324..00000000 --- a/src/lang/de.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "DS4.UserInteractionAddItem": "Neu", - "DS4.UserInteractionEditItem": "Bearbeiten", - "DS4.UserInteractionDeleteItem": "Löschen", - "DS4.NotOwned": "Nicht besessen", - "DS4.HeadingBiography": "Biografie", - "DS4.HeadingDetails": "Details", - "DS4.HeadingEffects": "Effekte", - "DS4.HeadingInventory": "Inventar", - "DS4.HeadingProfile": "Profil", - "DS4.HeadingTalentsAbilities": "Talente & Fähigkeiten", - "DS4.HeadingSpells": "Zaubersprüche", - "DS4.HeadingDescription": "Beschreibung", - "DS4.HeadingSpecialCreatureAbilites": "Besondere Fähigkeiten", - "DS4.AttackType": "Angriffs Typ", - "DS4.AttackTypeAbbr": "AT", - "DS4.WeaponBonus": "Waffen Bonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.OpponentDefense": "Gegner Abwehr", - "DS4.OpponentDefenseAbbr": "GA", - "DS4.AttackTypeMelee": "Schlagen", - "DS4.AttackTypeRanged": "Schießen", - "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", - "DS4.Description": "Beschreibung", - "DS4.Quantity": "Menge", - "DS4.PriceGold": "Preis (Gold)", - "DS4.StorageLocation": "Wo gelagert", - "DS4.ItemEquipped": "Ausgerüstet", - "DS4.ItemEquippedAbbr": "A", - "DS4.ItemOwner": "Besitzer", - "DS4.ItemAvailability": "Verfügbarkeit", - "DS4.ItemAvailabilityHamlet": "Dorf", - "DS4.ItemAvailabilityVilage": "Kleinstadt", - "DS4.ItemAvailabilityCity": "Großstadt", - "DS4.ItemAvailabilityElves": "Elfen", - "DS4.ItemAvailabilityDwarves": "Zwerge", - "DS4.ItemAvailabilityUnset": "nicht gesetzt", - "DS4.ItemAvailabilityNowhere": "nirgendwo", - "DS4.ItemName": "Name", - "DS4.ItemTypeWeapon": "Waffe", - "DS4.ItemTypeWeaponPlural": "Waffen", - "DS4.ItemTypeArmor": "Panzerung", - "DS4.ItemTypeArmorPlural": "Panzerungen", - "DS4.ItemTypeShield": "Schild", - "DS4.ItemTypeShieldPlural": "Schilde", - "DS4.ItemTypeSpell": "Zauberspruch", - "DS4.ItemTypeSpellPlural": "Zaubersprüche", - "DS4.ItemTypeTrinket": "Schmuckstück", - "DS4.ItemTypeTrinketPlural": "Schmuckstücke", - "DS4.ItemTypeEquipment": "Ausrüstung", - "DS4.ItemTypeEquipmentPlural": "Ausrüstung", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talente", - "DS4.ItemTypeRacialAbility": "Volksfähigkeit", - "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", - "DS4.ItemTypeLanguage": "Sprache", - "DS4.ItemTypeLanguagePlural": "Sprachen", - "DS4.ItemTypeAlphabet": "Schriftzeichen", - "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", - "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", - "DS4.ArmorType": "Panzerungstyp", - "DS4.ArmorTypeAbbr": "PAT", - "DS4.ArmorMaterialType": "Material Typ", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.ArmorValue": "Panzerungs Wert", - "DS4.ArmorValueAbbr": "PA", - "DS4.ArmorTypeBody": "Körper", - "DS4.ArmorTypeBodyAbbr": "Körper", - "DS4.ArmorTypeHelmet": "Helm", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Armschienen", - "DS4.ArmorTypeVambraceAbbr": "Arm", - "DS4.ArmorTypeGreaves": "Beinschienen", - "DS4.ArmorTypeGreavesAbbr": "Bein", - "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", - "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", - "DS4.ArmorMaterialTypeCloth": "Stoff", - "DS4.ArmorMaterialTypeClothAbbr": "Stoff", - "DS4.ArmorMaterialTypeLeather": "Leder", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", - "DS4.ArmorMaterialTypeChain": "Ketten", - "DS4.ArmorMaterialTypeChainAbbr": "Ketten", - "DS4.ArmorMaterialTypePlate": "Platten", - "DS4.ArmorMaterialTypePlateAbbr": "Platten", - "DS4.SpellType": "Zauberspruchtyp", - "DS4.SpellTypeAbbr": "T", - "DS4.SpellTypeSpellcasting": "Zaubern", - "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", - "DS4.SpellCategory": "Kategorie", - "DS4.SpellCategoryHealing": "Heilung", - "DS4.SpellCategoryFire": "Feuer", - "DS4.SpellCategoryIce": "Eis", - "DS4.SpellCategoryLight": "Licht", - "DS4.SpellCategoryDarkness": "Schatten", - "DS4.SpellCategoryMindAffecting": "Geistensbeeinflussend", - "DS4.SpellCategoryElectricity": "Elektrizität", - "DS4.SpellCategoryNone": "Keine", - "DS4.SpellCategoryUnset": "Nicht gesetzt", - "DS4.SpellBonus": "Zauberbonus", - "DS4.SpellBonusAbbr": "ZB", - "DS4.SpellMaxDistance": "Reichweite", - "DS4.SpellEffectRadius": "Effektradius", - "DS4.SpellDuration": "Wirkdauer", - "DS4.SpellCooldownDuration": "Abklingzeit", - "DS4.SpellScrollPriceGold": "Schriftrollenpreis (Gold)", - "DS4.ActorTypeCharacter": "Charakter", - "DS4.ActorTypeCreature": "Kreatur", - "DS4.AttributeBody": "Körper", - "DS4.AttributeMobility": "Agilität", - "DS4.AttributeMind": "Geist", - "DS4.TraitStrength": "Stärke", - "DS4.TraitConstitution": "Härte", - "DS4.TraitAgility": "Bewegung", - "DS4.TraitDexterity": "Geschick", - "DS4.TraitIntellect": "Verstand", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Lebenskraft", - "DS4.CombatValuesDefense": "Abwehr", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Laufen", - "DS4.CombatValuesMeleeAttack": "Schlagen", - "DS4.CombatValuesRangedAttack": "Schießen", - "DS4.CombatValuesSpellcasting": "Zaubern", - "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", - "DS4.CharacterBaseInfoRace": "Volk", - "DS4.CharacterBaseInfoClass": "Klasse", - "DS4.CharacterBaseInfoHeroClass": "Helden Klasse", - "DS4.CharacterBaseInfoCulture": "Kultur", - "DS4.CharacterProgressionLevel": "Stufe", - "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProgressionTalentPoints": "Talentpunkte", - "DS4.CharacterProgressionProgressPoints": "Lernpunkte", - "DS4.TalentRank": "Rang", - "DS4.TalentRankBase": "Erworbener Rang", - "DS4.TalentRankMax": "Maximaler Rang", - "DS4.TalentRankMod": "Zusätzlicher Rang", - "DS4.TalentRankTotal": "Gesamter Rang", - "DS4.CharacterLanguageLanguages": "Sprachen", - "DS4.CharacterLanguageAlphabets": "Schriftzeichen", - "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProfileBiography": "Biographie", - "DS4.CharacterProfileGender": "Geschlecht", - "DS4.CharacterProfileBirthday": "Geburtstag", - "DS4.CharacterProfileBirthplace": "Geburtsort", - "DS4.CharacterProfileAge": "Alter", - "DS4.CharacterProfileHeight": "Größe", - "DS4.CharacterProfileHairColor": "Haarfarbe", - "DS4.CharacterProfileWeight": "Gewicht", - "DS4.CharacterProfileEyeColor": "Augenfarbe", - "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silber", - "DS4.CharacterCurrencyCopper": "Kupfer", - "DS4.CharacterCurrency": "Währung", - "DS4.CreatureTypeAnimal": "Tier", - "DS4.CreatureTypeConstruct": "Konstrukt", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", - "DS4.CreatureTypePlantBeing": "Pflanzenwesen", - "DS4.CreatureTypeUndead": "Untot", - "DS4.CreatureSizeCategoryTiny": "Winzig", - "DS4.CreatureSizeCategorySmall": "Klein", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Groß", - "DS4.CreatureSizeCategoryHuge": "Riesig", - "DS4.CreatureSizeCategoryColossal": "Gewaltig", - "DS4.CreatureBaseInfoLoot": "Beute", - "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", - "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", - "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", - "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", - "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.", - "DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.", - "DS4.ErrorDiceCritOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.", - "DS4.ErrorExplodingRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", - "DS4.UnitRounds": "Runden", - "DS4.UnitRoundsAbbr": "Rnd", - "DS4.UnitMinutes": "Minuten", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Stunden", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Tage", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meter", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometer", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "individuell", - "DS4.UnitCustomAbbr": " ", - "DS4.RollDialogDefaultTitle": "Proben-Optionen", - "DS4.RollDialogOkButton": "Ok", - "DS4.RollDialogCancelButton": "Abbrechen", - "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde {exType}, tatsächlich erhalten wurde {realType}", - "DS4.RollDialogTargetLabel": "Probenwert", - "DS4.RollDialogModifierLabel": "SL-Modifikator", - "DS4.RollDialogCoupLabel": "Immersieg bis", - "DS4.RollDialogFumbleLabel": "Patzer ab", - "DS4.RollDialogVisibilityLabel": "Sichtbarkeit", - "DS4.ChatVisibilityRoll": "Alle", - "DS4.ChatVisibilityGmRoll": "Selbst & SL", - "DS4.ChatVisibilityBlindRoll": "Nur SL", - "DS4.ChatVisibilitySelfRoll": "Nur selbst" -} diff --git a/src/lang/en.json b/src/lang/en.json deleted file mode 100644 index c28b165f..00000000 --- a/src/lang/en.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "DS4.UserInteractionAddItem": "Add item", - "DS4.UserInteractionEditItem": "Edit item", - "DS4.UserInteractionDeleteItem": "Delete item", - "DS4.NotOwned": "No owner", - "DS4.HeadingBiography": "Biography", - "DS4.HeadingDetails": "Details", - "DS4.HeadingEffects": "Effects", - "DS4.HeadingInventory": "Inventory", - "DS4.HeadingProfile": "Profile", - "DS4.HeadingTalentsAbilities": "Talents & Abilities", - "DS4.HeadingSpells": "Spells", - "DS4.HeadingDescription": "Description", - "DS4.HeadingSpecialCreatureAbilites": "Special Abilites", - "DS4.AttackType": "Attack Type", - "DS4.AttackTypeAbbr": "AT", - "DS4.WeaponBonus": "Weapon Bonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.OpponentDefense": "Opponent Defense", - "DS4.OpponentDefenseAbbr": "OD", - "DS4.AttackTypeMelee": "Melee", - "DS4.AttackTypeRanged": "Ranged", - "DS4.AttackTypeMeleeRanged": "Melee / Ranged", - "DS4.Description": "Description", - "DS4.Quantity": "Quantity", - "DS4.PriceGold": "Price (Gold)", - "DS4.StorageLocation": "Stored at", - "DS4.ItemEquipped": "Equipped", - "DS4.ItemEquippedAbbr": "E", - "DS4.ItemOwner": "Owner", - "DS4.ItemAvailability": "Availability", - "DS4.ItemAvailabilityHamlet": "Hamlet", - "DS4.ItemAvailabilityVilage": "Village", - "DS4.ItemAvailabilityCity": "City", - "DS4.ItemAvailabilityElves": "Elves", - "DS4.ItemAvailabilityDwarves": "Dwarves", - "DS4.ItemAvailabilityUnset": "Unset", - "DS4.ItemAvailabilityNowhere": "Nowhere", - "DS4.ItemName": "Name", - "DS4.ItemTypeWeapon": "Weapon", - "DS4.ItemTypeWeaponPlural": "Weapons", - "DS4.ItemTypeArmor": "Armor", - "DS4.ItemTypeArmorPlural": "Armor", - "DS4.ItemTypeShield": "Shield", - "DS4.ItemTypeShieldPlural": "Shields", - "DS4.ItemTypeSpell": "Spell", - "DS4.ItemTypeSpellPlural": "Spells", - "DS4.ItemTypeTrinket": "Trinket", - "DS4.ItemTypeTrinketPlural": "Trinkets", - "DS4.ItemTypeEquipment": "Equipment", - "DS4.ItemTypeEquipmentPlural": "Equipment", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talents", - "DS4.ItemTypeRacialAbility": "Racial Ability", - "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", - "DS4.ItemTypeLanguage": "Language", - "DS4.ItemTypeLanguagePlural": "Languages", - "DS4.ItemTypeAlphabet": "Alphabet", - "DS4.ItemTypeAlphabetPlural": "Alphabets", - "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", - "DS4.ArmorType": "Armor Type", - "DS4.ArmorTypeAbbr": "AT", - "DS4.ArmorMaterialType": "Material Type", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.ArmorValue": "Armor Value", - "DS4.ArmorValueAbbr": "AV", - "DS4.ArmorTypeBody": "Body", - "DS4.ArmorTypeBodyAbbr": "Body", - "DS4.ArmorTypeHelmet": "Helmet", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Vambrace", - "DS4.ArmorTypeVambraceAbbr": "Vambr", - "DS4.ArmorTypeGreaves": "Greaves", - "DS4.ArmorTypeGreavesAbbr": "Greav", - "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", - "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", - "DS4.ArmorMaterialTypeCloth": "Cloth", - "DS4.ArmorMaterialTypeClothAbbr": "Cloth", - "DS4.ArmorMaterialTypeLeather": "Leather", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", - "DS4.ArmorMaterialTypeChain": "Chain", - "DS4.ArmorMaterialTypeChainAbbr": "Chain", - "DS4.ArmorMaterialTypePlate": "Plate", - "DS4.ArmorMaterialTypePlateAbbr": "Plate", - "DS4.SpellType": "Spell Type", - "DS4.SpellTypeAbbr": "T", - "DS4.SpellTypeSpellcasting": "Spellcasting", - "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", - "DS4.SpellCategory": "Category", - "DS4.SpellCategoryHealing": "Healing", - "DS4.SpellCategoryFire": "Fire", - "DS4.SpellCategoryIce": "Ice", - "DS4.SpellCategoryLight": "Light", - "DS4.SpellCategoryDarkness": "Darkness", - "DS4.SpellCategoryMindAffecting": "Mind Affecting", - "DS4.SpellCategoryElectricity": "Electricity", - "DS4.SpellCategoryNone": "None", - "DS4.SpellCategoryUnset": "Unset", - "DS4.SpellBonus": "Spell Bonus", - "DS4.SpellBonusAbbr": "SB", - "DS4.SpellMaxDistance": "Range", - "DS4.SpellEffectRadius": "Radius", - "DS4.SpellDuration": "Duration", - "DS4.SpellCooldownDuration": "Cooldown", - "DS4.SpellScrollPriceGold": "Scroll Price (Gold)", - "DS4.ActorTypeCharacter": "Character", - "DS4.ActorTypeCreature": "Creature", - "DS4.AttributeBody": "Body", - "DS4.AttributeMobility": "Mobility", - "DS4.AttributeMind": "Mind", - "DS4.TraitStrength": "Strength", - "DS4.TraitConstitution": "Constitution", - "DS4.TraitAgility": "Agility", - "DS4.TraitDexterity": "Dexterity", - "DS4.TraitIntellect": "Intellect", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Hit Points", - "DS4.CombatValuesDefense": "Defense", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Movement", - "DS4.CombatValuesMeleeAttack": "Melee Attack", - "DS4.CombatValuesRangedAttack": "Ranged Attack", - "DS4.CombatValuesSpellcasting": "Spellcasting", - "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", - "DS4.CharacterBaseInfoRace": "Race", - "DS4.CharacterBaseInfoClass": "Class", - "DS4.CharacterBaseInfoHeroClass": "Hero Class", - "DS4.CharacterBaseInfoCulture": "Culture", - "DS4.CharacterProgressionLevel": "Level", - "DS4.CharacterProgressionExperiencePoints": "Experience Points", - "DS4.CharacterProgressionTalentPoints": "Talent Points", - "DS4.CharacterProgressionProgressPoints": "Progress Points", - "DS4.TalentRank": "Rank", - "DS4.TalentRankBase": "Acquired Ranks", - "DS4.TalentRankMax": "Maximum Ranks", - "DS4.TalentRankMod": "Additional Ranks", - "DS4.TalentRankTotal": "Total Ranks", - "DS4.CharacterLanguageLanguages": "Languages", - "DS4.CharacterLanguageAlphabets": "Alphabets", - "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", - "DS4.CharacterProfileBiography": "Biography", - "DS4.CharacterProfileGender": "Gender", - "DS4.CharacterProfileBirthday": "Birthday", - "DS4.CharacterProfileBirthplace": "Birthplace", - "DS4.CharacterProfileAge": "Age", - "DS4.CharacterProfileHeight": "Height", - "DS4.CharacterProfileHairColor": "Hair Color", - "DS4.CharacterProfileWeight": "Weight", - "DS4.CharacterProfileEyeColor": "Eye Color", - "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silver", - "DS4.CharacterCurrencyCopper": "Copper", - "DS4.CharacterCurrency": "Currency", - "DS4.CreatureTypeAnimal": "Animal", - "DS4.CreatureTypeConstruct": "Construct", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magical Entity", - "DS4.CreatureTypePlantBeing": "Plant Being", - "DS4.CreatureTypeUndead": "Undead", - "DS4.CreatureSizeCategoryTiny": "Tiny", - "DS4.CreatureSizeCategorySmall": "Small", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Large", - "DS4.CreatureSizeCategoryHuge": "Huge", - "DS4.CreatureSizeCategoryColossal": "Colossal", - "DS4.CreatureBaseInfoLoot": "Loot", - "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", - "DS4.CreatureBaseInfoCreatureType": "Creature Type", - "DS4.CreatureBaseInfoSizeCategory": "Size Category", - "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", - "DS4.CreatureBaseInfoDescription": "Description", - "DS4.WarningManageActiveEffectOnOwnedItem": "Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update.", - "DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.", - "DS4.ErrorDiceCritOverlap": "There's an overlap between Fumbles and Coups", - "DS4.ErrorExplodingRecursionLimitExceeded": "Maximum recursion depth for exploding dice roll exceeded", - "DS4.UnitRounds": "Rounds", - "DS4.UnitRoundsAbbr": "rnd", - "DS4.UnitMinutes": "Minutes", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Hours", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Days", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meters", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometers", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "Custom Unit", - "DS4.UnitCustomAbbr": " ", - "DS4.RollDialogDefaultTitle": "Roll Options", - "DS4.RollDialogOkButton": "Ok", - "DS4.RollDialogCancelButton": "Cancel", - "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected {exType}, got {realType}", - "DS4.RollDialogTargetLabel": "Check Target Number", - "DS4.RollDialogModifierLabel": "Game Master Modifier", - "DS4.RollDialogCoupLabel": "Coup to", - "DS4.RollDialogFumbleLabel": "Fumble from", - "DS4.RollDialogVisibilityLabel": "Visibility", - "DS4.ChatVisibilityRoll": "All", - "DS4.ChatVisibilityGmRoll": "Self & GM", - "DS4.ChatVisibilityBlindRoll": "GM only", - "DS4.ChatVisibilitySelfRoll": "Self only" -} diff --git a/src/macros/helpers.js b/src/macros/helpers.js new file mode 100644 index 00000000..5984de49 --- /dev/null +++ b/src/macros/helpers.js @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getCanvas, getGame } from "../utils/utils"; + +/** + * Gets the currently active actor and token based on how {@link ChatMessage} + * determines the current speaker. + * @returns {{actor?: import("../documents/actor/actor").DS4Actor, token?: TokenDocument}} The currently active actor and token. + */ +export function getActiveActorAndToken() { + const speaker = ChatMessage.getSpeaker(); + + const speakerToken = speaker.token ? getCanvas().tokens?.get(speaker.token)?.document : undefined; + if (speakerToken) { + return { actor: speakerToken.actor ?? undefined, token: speakerToken }; + } + + const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined; + return { actor: speakerActor }; +} diff --git a/src/macros/macros.ts b/src/macros/macros.ts new file mode 100644 index 00000000..867edc91 --- /dev/null +++ b/src/macros/macros.ts @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { rollCheck } from "./roll-check"; +import { rollGenericCheck } from "./roll-generic-check"; +import { rollItem } from "./roll-item"; + +export const macros = { + rollCheck, + rollGenericCheck, + rollItem, +}; diff --git a/src/macros/roll-check.js b/src/macros/roll-check.js new file mode 100644 index 00000000..6218ab8e --- /dev/null +++ b/src/macros/roll-check.js @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4 } from "../config"; +import { isCheck } from "../documents/actor/actor-data-properties-base"; +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; +import { getActiveActorAndToken } from "./helpers"; + +/** + * Creates a macro from a check drop. + * Get an existing roll check macro if one exists, otherwise create a new one. + * @param {object} data The check drop data + * @param {string} slot The hotbar slot to use + * @returns {Promise} A promise that resolves when the macro has been created. + */ +export async function createRollCheckMacro(data, slot) { + if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { + return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped")); + } + const macro = await getOrCreateRollCheckMacro(data.data); + await getGame().user?.assignHotbarMacro(macro ?? null, slot); +} + +/** + * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform + * @returns {Promise} A promise that resolves to the created macro + */ +async function getOrCreateRollCheckMacro(check) { + const command = `game.ds4.macros.rollCheck("${check}");`; + + const existingMacro = getGame().macros?.find((m) => m.name === DS4.i18n.checks[check] && m.command === command); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: DS4.i18n.checks[check], + type: "script", + img: DS4.icons.checks[check], + flags: { "ds4.checkMacro": true }, + }, + { renderSheet: false }, + ); +} + +/** + * Executes the roll check macro for the given check. + * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform + * @returns {Promise} A promise that resolves once the check has been performed. + */ +export async function rollCheck(check) { + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + } + + return actor.rollCheck(check, { speaker: { token } }).catch((e) => notifications.error(e, { log: true })); +} diff --git a/src/macros/roll-generic-check.ts b/src/macros/roll-generic-check.ts new file mode 100644 index 00000000..4efa9a75 --- /dev/null +++ b/src/macros/roll-generic-check.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; +import { getActiveActorAndToken } from "./helpers"; + +/** + * Executes the roll generic check macro. + */ +export async function rollGenericCheck(): Promise { + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + } + + return actor.rollGenericCheck({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); +} diff --git a/src/macros/roll-item.js b/src/macros/roll-item.js new file mode 100644 index 00000000..c63dca90 --- /dev/null +++ b/src/macros/roll-item.js @@ -0,0 +1,83 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { DS4Item } from "../documents/item/item"; +import { notifications } from "../ui/notifications"; +import { getGame } from "../utils/utils"; +import { getActiveActorAndToken } from "./helpers"; + +/** + * Create a macro from an item drop. + * Get an existing roll item macro if one exists, otherwise create a new one. + * @param {object} data The item drop data + * @param {string} slot The hotbar slot to use + * @returns {Promise} A promise that resolves once the macro has been created. + */ +export async function createRollItemMacro(data, slot) { + const item = await Item.implementation.fromDropData(data); + if (!item.parent) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); + } + if (!DS4Item.rollableItemTypes.includes(item.type)) { + return notifications.warn( + getGame().i18n.format("DS4.WarningItemIsNotRollable", { + name: item.name, + id: item.id, + type: item.type, + }), + ); + } + + const macro = await getOrCreateRollItemMacro(item); + await getGame().user?.assignHotbarMacro(macro ?? null, slot); +} + +/** + * @param {object} item The item + * @returns {Promise} A promise that resolves to the created macro + */ +async function getOrCreateRollItemMacro(item) { + const command = `game.ds4.macros.rollItem("${item.id}");`; + + const existingMacro = getGame().macros?.find((m) => m.name === item.name && m.command === command); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: item.name, + type: "script", + img: item.img, + flags: { "ds4.itemMacro": true }, + }, + { renderSheet: false }, + ); +} + +/** + * Executes the roll item macro for the item associated to the given `itemId`. + * @param {string} itemId The id of the item to roll + * @returns {Promise} A promise that resolves once the item has been rolled. + */ +export async function rollItem(itemId) { + const { actor, token } = getActiveActorAndToken(); + if (!actor) { + return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); + } + + const item = actor.items.get(itemId); + if (!item) { + return notifications.warn( + getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { + actorName: actor.name, + actorId: actor.id, + itemId, + }), + ); + } + + return item.roll({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); +} diff --git a/src/migration/001.js b/src/migration/001.js new file mode 100644 index 00000000..822dd3d0 --- /dev/null +++ b/src/migration/001.js @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getSceneMigrator, migrateCollection, migrateCompendiums, getCompendiumMigrator } from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActor(actor) { + await actor.update({ + system: { + combatValues: [ + "hitPoints", + "defense", + "initiative", + "movement", + "meleeAttack", + "rangedAttack", + "spellcasting", + "targetedSpellcasting", + ].reduce((acc, curr) => { + acc[curr] = { "-=base": null }; + return acc; + }, {}), + }, + }); +} + +const migrateScene = getSceneMigrator(migrateActor); + +const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/002.js b/src/migration/002.js new file mode 100644 index 00000000..41b04128 --- /dev/null +++ b/src/migration/002.js @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "equipment" || item.type === "trinket") { + await item.update({ type: item.type === "equipment" ? "loot" : "equipment" }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene }, + { migrateToTemplateEarly: false }, +); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/003.js b/src/migration/003.js new file mode 100644 index 00000000..a5ffda16 --- /dev/null +++ b/src/migration/003.js @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import("./migrationHelpers.js").Migrator} */ +async function migrateItem(item) { + if (item.type === "loot") { + await item.update({ system: { "-=equipped": null } }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene }, + { migrateToTemplateEarly: false }, +); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/004.js b/src/migration/004.js new file mode 100644 index 00000000..23061527 --- /dev/null +++ b/src/migration/004.js @@ -0,0 +1,51 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const cooldownDurationUnit = item.system?.cooldownDuration.unit; + await item.update({ + system: { + "-=scrollPrice": null, + minimumLevels: { healer: null, wizard: null, sorcerer: null }, + cooldownDuration: { + unit: cooldownDurationUnit === "custom" ? "rounds" : cooldownDurationUnit, + }, + }, + }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/005.js b/src/migration/005.js new file mode 100644 index 00000000..fdbbb65b --- /dev/null +++ b/src/migration/005.js @@ -0,0 +1,124 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +const secondsPerRound = 5; +const secondsPerMinute = 60; +const roundsPerMinute = secondsPerMinute / secondsPerRound; +const minutesPerHour = 60; +const roundsPerHour = minutesPerHour / roundsPerMinute; +const hoursPerDay = 24; +const roundsPerDay = hoursPerDay / roundsPerHour; +const secondsPerDay = secondsPerMinute * minutesPerHour * hoursPerDay; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const cooldownDurationUnit = item.system?.cooldownDuration.unit; + const cooldownDurationValue = item.system?.cooldownDuration.value; + const cooldownDuration = migrateCooldownDuration(cooldownDurationValue, cooldownDurationUnit); + await item.update({ system: { cooldownDuration } }); + } +} + +function migrateCooldownDuration(cooldownDurationValue = "", cooldownDurationUnit = "") { + if (Number.isNumeric(cooldownDurationValue)) { + const value = Number.fromString(cooldownDurationValue); + const rounds = getRounds(cooldownDurationUnit, value); + + if (rounds * secondsPerRound > secondsPerDay) { + return "d20d"; + } else if (rounds > 100) { + return "1d"; + } else if (rounds > 10) { + return "100r"; + } else if (rounds > 5) { + return "10r"; + } else if (rounds > 2) { + return "5r"; + } else if (rounds > 1) { + return "2r"; + } else if (rounds > 0) { + return "1r"; + } else { + return "0r"; + } + } else { + // if the value is not numeric, we can only make a best guess + switch (cooldownDurationUnit) { + case "rounds": { + return "10r"; + } + case "minutes": { + return "100r"; + } + case "hours": { + return "1d"; + } + case "days": { + return "d20d"; + } + default: { + return "0r"; + } + } + } +} + +/** + * Given a unit and a value, return the correct number of rounds + * @param {string} unit The unit + * @param {number} value The value + * @returns {number} The number of rounds + */ +function getRounds(unit, value) { + switch (unit) { + case "rounds": { + return value; + } + case "minutes": { + return value * roundsPerMinute; + } + case "hours": { + return value * roundsPerHour; + } + case "days": { + return value * roundsPerDay; + } + default: { + return 0; + } + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/006.js b/src/migration/006.js new file mode 100644 index 00000000..666c5d66 --- /dev/null +++ b/src/migration/006.js @@ -0,0 +1,128 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + const spellCategory = item.system?.spellCategory; + const spellGroups = migrateSpellCategory(spellCategory); + const bonus = item.system?.bonus; + const spellModifier = migrateBonus(bonus); + await item.update({ + system: { + spellGroups, + "-=spellCategory": null, + spellModifier, + "-=bonus": null, + }, + }); + } +} + +/** + * Migrate a spell category to spell groups. + * @param {string | undefined} spellCategory The spell category + * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellGroups"]} The spell groups for the given category + */ +function migrateSpellCategory(spellCategory) { + const spellGroups = { + lightning: false, + earth: false, + water: false, + ice: false, + fire: false, + healing: false, + light: false, + air: false, + transport: false, + damage: false, + shadow: false, + protection: false, + mindAffecting: false, + demonology: false, + necromancy: false, + transmutation: false, + area: false, + }; + switch (spellCategory) { + case "healing": { + spellGroups.healing = true; + break; + } + case "fire": { + spellGroups.fire = true; + break; + } + case "ice": { + spellGroups.ice = true; + break; + } + case "light": { + spellGroups.light = true; + break; + } + case "darkness": { + spellGroups.shadow = true; + break; + } + case "mindAffecting": { + spellGroups.mindAffecting = true; + break; + } + case "electricity": { + spellGroups.lightning = true; + break; + } + } + return spellGroups; +} + +/** + * Migrate a spell bonus to a spell modifier. + * @param {string | undefined} bonus The spell bonus + * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellModifier"]} The spell modifier + */ +function migrateBonus(bonus) { + const spellModifier = { numerical: 0, complex: "" }; + if (bonus) { + if (Number.isNumeric(bonus)) { + spellModifier.numerical = +bonus; + } else { + spellModifier.complex = bonus; + } + } + return spellModifier; +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/007.js b/src/migration/007.js new file mode 100644 index 00000000..f5d86fad --- /dev/null +++ b/src/migration/007.js @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateItem(item) { + if (item.type === "spell") { + await item.update({ system: { allowsDefense: false } }); + } +} + +const migrateActor = getActorMigrator(migrateItem); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/008.js b/src/migration/008.js new file mode 100644 index 00000000..4fb67166 --- /dev/null +++ b/src/migration/008.js @@ -0,0 +1,66 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, + getItemMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const itemsResult = await migrateCollection(game.items, migrateItem); + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return itemsResult === "error" || + actorsResult === "error" || + scenesResult === "error" || + compendiumsResult === "error" + ? "error" + : "success"; +} + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActiveEffect(activeEffect) { + const data = activeEffect.toObject(); + let hasUpdates = false; + + if ("changes" in data) { + for (const change of data.changes) { + const newValue = change.value.replaceAll(/@data\./g, "@system."); + if (newValue !== change.value) { + hasUpdates = true; + change.value = newValue; + } + } + } + + /** @type {string | undefined} */ + const condition = data.flags?.ds4?.itemEffectConfig?.condition; + if (condition !== undefined) { + const newCondition = condition.replaceAll(/(@actor|@item|@effect)\.data/g, "$1.system"); + if (newCondition !== condition) { + hasUpdates = true; + data.flags.ds4.itemEffectConfig.condition = newCondition; + } + } + if (hasUpdates) { + await activeEffect.update(data); + } +} + +const migrateItem = getItemMigrator(migrateActiveEffect); +const migrateActor = getActorMigrator(migrateItem, migrateActiveEffect); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/009.js b/src/migration/009.js new file mode 100644 index 00000000..0c97c67b --- /dev/null +++ b/src/migration/009.js @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 2023 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { + getSceneMigrator, + migrateCollection, + migrateCompendiums, + getCompendiumMigrator, + getActorMigrator, +} from "./migrationHelpers.js"; + +/** @type {import("./migration.js").Migration["migrate"]} */ +async function migrate() { + const actorsResult = await migrateCollection(game.actors, migrateActor); + const scenesResult = await migrateCollection(game.scenes, migrateScene); + const compendiumsResult = await migrateCompendiums(migrateCompendium); + return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; +} + +const itemIdRegex = /Item\.([a-zA-Z0-9]+)/; + +/** @type {import('./migrationHelpers.js').Migrator} */ +async function migrateActiveEffect(activeEffect) { + if (activeEffect.parent instanceof Actor) { + const itemId = activeEffect.origin?.match(itemIdRegex)?.[1]; + if (activeEffect.parent.items.has(itemId)) { + await activeEffect.delete(); + } + } +} + +const migrateActor = getActorMigrator(undefined, migrateActiveEffect); +const migrateScene = getSceneMigrator(migrateActor); +const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); + +/** @type {import("./migration.js").Migration} */ +export const migration = { + migrate, + migrateCompendium, +}; diff --git a/src/migration/migration.js b/src/migration/migration.js new file mode 100644 index 00000000..797ac457 --- /dev/null +++ b/src/migration/migration.js @@ -0,0 +1,215 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { notifications } from "../ui/notifications.js"; +import { logger } from "../utils/logger.js"; +import { getGame } from "../utils/utils.js"; +import { migration as migration001 } from "./001.js"; +import { migration as migration002 } from "./002.js"; +import { migration as migration003 } from "./003.js"; +import { migration as migration004 } from "./004.js"; +import { migration as migration005 } from "./005.js"; +import { migration as migration006 } from "./006.js"; +import { migration as migration007 } from "./007.js"; +import { migration as migration008 } from "./008.js"; +import { migration as migration009 } from "./009.js"; + +/** + * Perform migrations. + * @returns {Promise} A promise that resolves once all migrations have completed + */ +async function migrate() { + if (!getGame().user?.isGM) { + return; + } + + const oldMigrationVersion = getCurrentMigrationVersion(); + + const targetMigrationVersion = migrations.length; + + if (isFirstWorldStart(oldMigrationVersion)) { + getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); + return; + } + + return migrateFromTo(oldMigrationVersion, targetMigrationVersion); +} + +/** + * Migrate from a given version to another version. + * @param {number} oldMigrationVersion The old migration version + * @param {number} targetMigrationVersion The migration version to migrate to + * @returns {Promise} A promise the resolves once the migration is complete + */ +async function migrateFromTo(oldMigrationVersion, targetMigrationVersion) { + if (!getGame().user?.isGM) { + return; + } + + const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); + + if (migrationsToExecute.length > 0) { + notifications.info( + getGame().i18n.format("DS4.InfoSystemUpdateStart", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + + /** @type {Result} */ + let result = "success"; + for (const [i, { migrate }] of migrationsToExecute.entries()) { + const currentMigrationVersion = oldMigrationVersion + i + 1; + logger.info("executing migration script", currentMigrationVersion); + try { + const r = await migrate(); + getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); + if (r === "error") { + result = "error"; + } + } catch (err) { + notifications.error( + getGame().i18n.format("DS4.ErrorDuringMigration", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + migrationVersion: currentMigrationVersion, + }), + { permanent: true }, + ); + logger.error("Failed ds4 system migration:", err); + return; + } + } + + if (result === "success") { + notifications.info( + getGame().i18n.format("DS4.InfoSystemUpdateCompletedSuccessfully", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } else { + notifications.warn( + getGame().i18n.format("DS4.WarningSystemUpdateCompletedWithErrors", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } + } +} + +/** + * Migrate a compendium pack from a given version to another version. + * @param {CompendiumCollection} pack The compendium pack to migrate + * @param {number} oldMigrationVersion The old version number + * @param {number} targetMigrationVersion The target version number + * @returns {Promise} A promise that resolves once the migration is complete + */ +async function migrateCompendiumFromTo(pack, oldMigrationVersion, targetMigrationVersion) { + if (!getGame().user?.isGM) { + return; + } + + const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); + + if (migrationsToExecute.length > 0) { + notifications.info( + getGame().i18n.format("DS4.InfoCompendiumMigrationStart", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + + for (const [i, { migrateCompendium }] of migrationsToExecute.entries()) { + const currentMigrationVersion = oldMigrationVersion + i + 1; + logger.info("executing compendium migration ", currentMigrationVersion); + try { + await migrateCompendium(pack); + } catch (err) { + notifications.error( + getGame().i18n.format("DS4.ErrorDuringCompendiumMigration", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + migrationVersion: currentMigrationVersion, + }), + { permanent: true }, + ); + logger.error("Failed ds4 compendium migration:", err); + return; + } + } + + notifications.info( + getGame().i18n.format("DS4.InfoCompendiumMigrationCompleted", { + pack: pack.title, + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } +} + +/** + * Get the current migration version. + * @returns {number} The current migration version + */ +function getCurrentMigrationVersion() { + return getGame().settings.get("ds4", "systemMigrationVersion"); +} + +/** + * Get the target migration version. + * @returns {number} The target migration version + */ +function getTargetMigrationVersion() { + return migrations.length; +} + +/** @typedef {"success" | "error"} Result */ + +/** + * @typedef {object} Migration + * @property {() => Promise} migrate + * @property {import("./migrationHelpers").CompendiumMigrator} migrateCompendium + */ + +/** + * @type {Migration[]} + */ +const migrations = [ + migration001, + migration002, + migration003, + migration004, + migration005, + migration006, + migration007, + migration008, + migration009, +]; + +/** + * DOes the migration version indicate the world is being started for the first time? + * @param {number} migrationVersion A migration version + * @returns {boolean} Whether the migration version indicates it is the first start of the world + */ +function isFirstWorldStart(migrationVersion) { + return migrationVersion < 0; +} + +export const migration = { + migrate, + migrateFromTo, + getCurrentMigrationVersion, + getTargetMigrationVersion, + migrateCompendiumFromTo, +}; diff --git a/src/migration/migrationHelpers.js b/src/migration/migrationHelpers.js new file mode 100644 index 00000000..48399db1 --- /dev/null +++ b/src/migration/migrationHelpers.js @@ -0,0 +1,177 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { logger } from "../utils/logger.js"; +import { getGame } from "../utils/utils.js"; + +/** + * @template T + * @typedef {(document: T) => Promise} Migrator + */ + +/** + * Migrate a collection. + * @template T + * @param {WorldCollection} collection + * @param {Migrator} migrateDocument + * @returns {Promise} A promise that resolves once the migration is complete + */ +export async function migrateCollection(collection, migrateDocument) { + /** @type {import("./migration.js").Result} */ + let result = "success"; + const { documentName } = collection.constructor; + for (const document of collection) { + logger.info(`Migrating ${documentName} document ${document.name} (${document.id})`); + try { + await migrateDocument(document); + } catch (err) { + logger.error( + `Error during migration of ${documentName} document ${document.name} (${document.id}), continuing anyways.`, + err, + ); + result = "error"; + } + } + return result; +} + +/** + * @param {Migrator} [migrateActiveEffect] + * @returns {Migrator} + */ +export function getItemMigrator(migrateActiveEffect) { + /** + * @param {Item} item + */ + return async (item) => { + if (migrateActiveEffect) { + for (const effect of item.effects) { + await migrateActiveEffect(effect); + } + } + }; +} + +/** + * @param {Migrator} [migrateItem] + * @param {Migrator} [migrateActiveEffect] + * @returns {Migrator} + */ +export function getActorMigrator(migrateItem, migrateActiveEffect) { + /** + * @param {Actor} actor + */ + return async (actor) => { + if (migrateItem) { + for (const item of actor.items) { + await migrateItem(item); + } + } + if (migrateActiveEffect) { + for (const effect of actor.effects) { + await migrateActiveEffect(effect); + } + } + }; +} + +/** + * @param {Migrator} [migrateActor] + * @returns {Migrator} + */ +export function getSceneMigrator(migrateActor) { + /** + * @param {Scene} scene + */ + return async (scene) => { + if (migrateActor) { + for (const token of scene.tokens) { + if (!token.actorLink && token.actor) { + await migrateActor(token.actor); + } + } + } + }; +} + +/** @typedef {(pack: CompendiumCollection) => Promise} CompendiumMigrator */ + +/** + * Migrate world compendium packs. + * @param {CompendiumMigrator} migrateCompendium A function for migrating a single compendium pack + * @returns {Promise} A promise that resolves once the migration is complete + */ +export async function migrateCompendiums(migrateCompendium) { + /** @type {import("./migration.js").Result} */ + let result = "success"; + for (const compendium of getGame().packs ?? []) { + if (compendium.metadata.package !== "world") continue; + if (!["Actor", "Item", "Scene"].includes(compendium.metadata.type)) continue; + const r = await migrateCompendium(compendium); + if (r === "error") { + result = "error"; + } + } + return result; +} + +/** + * @typedef {object} Migrators + * @property {Migrator} [migrateItem] + * @property {Migrator} [migrateActor] + * @property {Migrator} [migrateScene] + */ + +/** + * Get a compendium migrator for the given migrators. + * @param {Migrators} [migrators={}] The functions to use for getting update data + * @param {{migrateToTemplateEarly?: boolean}} [options={}] Additional options for the compendium migrator + * @returns {CompendiumMigrator} The resulting compendium migrator + */ +export function getCompendiumMigrator( + { migrateItem, migrateActor, migrateScene } = {}, + { migrateToTemplateEarly = true } = {}, +) { + return async (pack) => { + /** @type {import("./migration.js").Result} */ + let result = "success"; + + const type = pack.metadata.type; + const migrateDocument = { + Item: migrateItem, + Actor: migrateActor, + Scene: migrateScene, + }[type]; + + if (migrateDocument) { + const wasLocked = pack.locked; + await pack.configure({ locked: false }); + if (migrateToTemplateEarly) { + await pack.migrate(); + } + + const documents = await pack.getDocuments(); + + for (const doc of documents) { + try { + logger.info(`Migrating document ${doc.name} (${doc.id}) in compendium ${pack.collection}`); + await migrateDocument(doc); + } catch (err) { + logger.error( + `Error during migration of document ${doc.name} (${doc.id}) in compendium ${pack.collection}, continuing anyways.`, + err, + ); + result = "error"; + } + } + + if (!migrateToTemplateEarly) { + await pack.migrate(); + } + await pack.configure({ locked: wasLocked }); + } + + return result; + }; +} diff --git a/src/module/actor/actor-data.ts b/src/module/actor/actor-data.ts deleted file mode 100644 index dba57d9f..00000000 --- a/src/module/actor/actor-data.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { ModifiableData, ResourceData, UsableResource } from "../common/common-data"; - -export type DS4ActorDataType = DS4ActorDataCharacter | DS4ActorDataCreature; - -interface DS4ActorDataBase { - attributes: DS4ActorDataAttributes; - traits: DS4ActorDataTraits; - combatValues: DS4ActorDataCombatValues; -} - -interface DS4ActorDataAttributes { - body: ModifiableData; - mobility: ModifiableData; - mind: ModifiableData; -} - -interface DS4ActorDataTraits { - strength: ModifiableData; - constitution: ModifiableData; - agility: ModifiableData; - dexterity: ModifiableData; - intellect: ModifiableData; - aura: ModifiableData; -} - -interface DS4ActorDataCombatValues { - hitPoints: ResourceData; - defense: ModifiableData; - initiative: ModifiableData; - movement: ModifiableData; - meleeAttack: ModifiableData; - rangedAttack: ModifiableData; - spellcasting: ModifiableData; - targetedSpellcasting: ModifiableData; -} - -interface DS4ActorDataCharacter extends DS4ActorDataBase { - baseInfo: DS4ActorDataCharacterBaseInfo; - progression: DS4ActorDataCharacterProgression; - language: DS4ActorDataCharacterLanguage; - profile: DS4ActorDataCharacterProfile; - currency: DS4ActorDataCharacterCurrency; -} - -interface DS4ActorDataCharacterBaseInfo { - race: string; - class: string; - heroClass: string; - culture: string; -} - -interface DS4ActorDataCharacterProgression { - level: number; - experiencePoints: number; - talentPoints: UsableResource; - progressPoints: UsableResource; -} - -interface DS4ActorDataCharacterLanguage { - languages: string; - alphabets: string; -} - -interface DS4ActorDataCharacterProfile { - biography: string; - gender: string; - birthday: string; - birthplace: string; - age: number; - height: number; - hairColor: string; - weight: number; - eyeColor: string; - specialCharacteristics: string; -} - -interface DS4ActorDataCharacterCurrency { - gold: number; - silver: number; - copper: number; -} - -interface DS4ActorDataCreature extends DS4ActorDataBase { - baseInfo: DS4ActorDataCreatureBaseInfo; -} - -type CreatureType = "animal" | "construct" | "humanoid" | "magicalEntity" | "plantBeing" | "undead"; - -type SizeCategory = "tiny" | "small" | "normal" | "large" | "huge" | "colossal"; - -interface DS4ActorDataCreatureBaseInfo { - loot: string; - foeFactor: number; - creatureType: CreatureType; - sizeCategory: SizeCategory; - experiencePoints: number; - description: string; -} diff --git a/src/module/actor/actor.ts b/src/module/actor/actor.ts deleted file mode 100644 index df3ad6d7..00000000 --- a/src/module/actor/actor.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { ModifiableData } from "../common/common-data"; -import { DS4Item } from "../item/item"; -import { DS4ItemDataType, ItemType } from "../item/item-data"; -import { DS4ActorDataType } from "./actor-data"; - -export class DS4Actor extends Actor { - /** @override */ - prepareDerivedData(): void { - const data = this.data; - const attributes = data.data.attributes; - Object.values(attributes).forEach( - (attribute: ModifiableData) => (attribute.total = attribute.base + attribute.mod), - ); - - const traits = data.data.traits; - Object.values(traits).forEach((trait: ModifiableData) => (trait.total = trait.base + trait.mod)); - - const combatValues = data.data.combatValues; - Object.values(combatValues).forEach( - (combatValue: ModifiableData) => (combatValue.total = combatValue.base + combatValue.mod), - ); - - combatValues.hitPoints.max = combatValues.hitPoints.total; - } - - /** - * The list of item types that can be owned by this actor. - */ - get ownableItemTypes(): Array { - switch (this.data.type) { - case "character": - return [ - "weapon", - "armor", - "shield", - "trinket", - "equipment", - "spell", - "talent", - "racialAbility", - "language", - "alphabet", - ]; - case "creature": - return ["weapon", "armor", "shield", "trinket", "equipment", "spell", "specialCreatureAbility"]; - default: - return []; - } - } - - /** - * Checks whether or not the given item type can be owned by the actor. - * @param itemType the item type to check - */ - canOwnItemType(itemType: ItemType): boolean { - return this.ownableItemTypes.includes(itemType); - } -} diff --git a/src/module/actor/sheets/actor-sheet.ts b/src/module/actor/sheets/actor-sheet.ts deleted file mode 100644 index 26f6bd8b..00000000 --- a/src/module/actor/sheets/actor-sheet.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { DS4Item } from "../../item/item"; -import { DS4ItemDataType, ItemType } from "../../item/item-data"; -import { DS4Actor } from "../actor"; -import { DS4ActorDataType } from "../actor-data"; - -/** - * Extend the basic ActorSheet with some very simple modifications - * @extends {ActorSheet} - */ -export class DS4ActorSheet extends ActorSheet { - /** @override */ - static get defaultOptions(): FormApplicationOptions { - return mergeObject(super.defaultOptions, { - classes: ["ds4", "sheet", "actor"], - width: 745, - height: 600, - }); - } - - /** @override */ - get template(): string { - const path = "systems/ds4/templates/actor"; - return `${path}/${this.actor.data.type}-sheet.hbs`; - } - - /* -------------------------------------------- */ - - /** - * This method returns the data for the template of the actor sheet. - * It explicitly adds the items of the object sorted by type in the - * object itemsByType. - * @returns the data fed to the template of the actor sheet - */ - getData(): ActorSheetData { - const data = { - ...super.getData(), - // Add the localization config to the data: - config: CONFIG.DS4, - // Add the items explicitly sorted by type to the data: - itemsByType: this.actor.itemTypes, - }; - return data; - } - - /* -------------------------------------------- */ - - /** @override */ - activateListeners(html: JQuery): void { - super.activateListeners(html); - - // Everything below here is only needed if the sheet is editable - if (!this.options.editable) return; - - // Add Inventory Item - html.find(".item-create").on("click", this._onItemCreate.bind(this)); - - // Update Inventory Item - html.find(".item-edit").on("click", (ev) => { - const li = $(ev.currentTarget).parents(".item"); - const item = this.actor.getOwnedItem(li.data("itemId")); - item.sheet.render(true); - }); - - // Delete Inventory Item - html.find(".item-delete").on("click", (ev) => { - const li = $(ev.currentTarget).parents(".item"); - this.actor.deleteOwnedItem(li.data("itemId")); - li.slideUp(200, () => this.render(false)); - }); - - html.find(".item-change").on("change", this._onItemChange.bind(this)); - - // Rollable abilities. - html.find(".rollable").click(this._onRoll.bind(this)); - } - - /* -------------------------------------------- */ - - /** - * Handle creating a new Owned Item for the actor using initial data defined in the HTML dataset - * @param {JQuery.ClickEvent} event The originating click event - * @private - */ - private _onItemCreate(event: JQuery.ClickEvent): Promise { - event.preventDefault(); - const header = event.currentTarget; - // Get the type of item to create. - const type = header.dataset.type; - // Grab any data associated with this control. - const data = duplicate(header.dataset); - // Initialize a default name. - const name = `New ${type.capitalize()}`; - // Prepare the item object. - const itemData = { - name: name, - type: type, - data: data, - }; - // Remove the type from the dataset since it's in the itemData.type prop. - delete itemData.data.type; - - // Finally, create the item! - return this.actor.createOwnedItem(itemData); - } - - /** - * Handle changes to properties of an Owned Item from within character sheet. - * Can currently properly bind: see getValue(). - * Assumes the item property is given as the value of the HTML element property 'data-property'. - * @param {JQuery.ChangeEvent} ev The originating change event - * @private - */ - private _onItemChange(ev: JQuery.ChangeEvent): void { - ev.preventDefault(); - console.log("Current target:", $(ev.currentTarget).get(0)["name"]); - const el: HTMLFormElement = $(ev.currentTarget).get(0); - const id = $(ev.currentTarget).parents(".item").data("itemId"); - const item = duplicate(this.actor.getOwnedItem(id)); // getOwnedItem is typed incorrectly, it actually returns a ItemData, not an Item - const property: string | undefined = $(ev.currentTarget).data("property"); - - // Early return: - // Disabled => do nothing - if (el.disabled || el.getAttribute("disabled")) return; - // name not given => raise - if (property === undefined) { - throw TypeError("HTML element does not provide 'data-property' attribute"); - } - - // Set new value - const newValue = this.getValue(el); - setProperty(item, property, newValue); - this.actor.updateOwnedItem(item); - } - - /** - * Collect the value of a form element depending on the element's type - * The value is parsed to: - * - Checkbox: boolean - * - Text input: string - * - Number: number - * @param el the input element to collect the value of - */ - private getValue(el: HTMLFormElement): boolean | string | number { - // One needs to differentiate between e.g. checkboxes (value="on") and select boxes etc. - // Checkbox: - if (el.type === "checkbox") { - const value: boolean = el.checked; - return value; - } - - // Text input: - else if (el.type === "text") { - const value: string = el.value; - return value; - } - - // Numbers: - else if (el.type === "number") { - const value = Number(el.value.trim()); - return value; - } - - // // Ranges: - // else if (el.type === "range") { - // const value: string = el.value.trim(); - // return value; - // } - - // // Radio Checkboxes (untested, cf. FormDataExtended.process) - // else if (el.type === "radio") { - // const chosen: HTMLFormElement = el.find((r: HTMLFormElement) => r["checked"]); - // const value: string = chosen ? chosen.value : null; - // return value; - // } - - // // Multi-Select (untested, cf. FormDataExtended.process) - // else if (el.type === "select-multiple") { - // const value: Array = []; - // el.options.array.forEach((opt: HTMLOptionElement) => { - // if (opt.selected) value.push(opt.value); - // }); - // return value; - - // unsupported: - else { - throw TypeError("Binding of item property to this type of HTML element not supported; given: " + el); - } - } - - /** - * Handle clickable rolls. - * @param {JQuery.ClickEvent} event The originating click event - * @private - */ - private _onRoll(event: JQuery.ClickEvent): void { - event.preventDefault(); - const element = event.currentTarget; - const dataset = element.dataset; - - if (dataset.roll) { - const roll = new Roll(dataset.roll, this.actor.data.data); - const label = dataset.label ? `Rolling ${dataset.label}` : ""; - roll.roll().toMessage({ - speaker: ChatMessage.getSpeaker({ actor: this.actor }), - flavor: label, - }); - } - } - - /** - * @override - */ - async _onDrop(event: DragEvent): Promise { - const data = JSON.parse(event.dataTransfer?.getData("text/plain")) as { type?: string }; - if (data.type === "Item") { - const item = await Item.fromDropData(data as Parameters[0]); - if (item && !this.actor.canOwnItemType(item.data.type as ItemType)) { - ui.notifications.warn( - game.i18n.format("DS4.WarningActorCannotOwnItem", { - actorName: this.actor.name, - actorType: this.actor.data.type, - itemName: item.name, - itemType: item.data.type, - }), - ); - return false; - } - } - return super._onDrop(event); - } -} diff --git a/src/module/actor/sheets/character-sheet.ts b/src/module/actor/sheets/character-sheet.ts deleted file mode 100644 index a7f9d15e..00000000 --- a/src/module/actor/sheets/character-sheet.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DS4ActorSheet } from "./actor-sheet"; - -export class DS4CharacterActorSheet extends DS4ActorSheet { - /** @override */ - static get defaultOptions(): FormApplicationOptions { - return mergeObject(super.defaultOptions, { - classes: ["ds4", "sheet", "actor", "character"], - tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "inventory" }], - }); - } -} diff --git a/src/module/actor/sheets/creature-sheet.ts b/src/module/actor/sheets/creature-sheet.ts deleted file mode 100644 index 8c86848f..00000000 --- a/src/module/actor/sheets/creature-sheet.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DS4ActorSheet } from "./actor-sheet"; - -export class DS4CreatureActorSheet extends DS4ActorSheet { - /** @override */ - static get defaultOptions(): FormApplicationOptions { - return mergeObject(super.defaultOptions, { - classes: ["ds4", "sheet", "actor", "creature"], - tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "inventory" }], - }); - } -} diff --git a/src/module/common/common-data.ts b/src/module/common/common-data.ts deleted file mode 100644 index 41bfc3c4..00000000 --- a/src/module/common/common-data.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface ModifiableData { - base: T; - mod: T; - total?: T; -} - -export interface ResourceData extends ModifiableData { - value: T; - max?: T; -} - -export interface UsableResource { - total: T; - used: T; -} diff --git a/src/module/config.ts b/src/module/config.ts deleted file mode 100644 index 106a791f..00000000 --- a/src/module/config.ts +++ /dev/null @@ -1,322 +0,0 @@ -export const DS4 = { - // ASCII Artwork - ASCII: String.raw`_____________________________________________________________________________________________ - ____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _ -| _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || | -| | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_ -| |_| | |_| | |\ | |_| | |__| |_| | |\ |___) | |___ / ___ \| | | |___| _ < ___) | |__ _| -|____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_| -=============================================================================================`, - - /** - * Define the set of acttack types that can be performed with weapon items - */ - attackTypes: { - melee: "DS4.AttackTypeMelee", - ranged: "DS4.AttackTypeRanged", - meleeRanged: "DS4.AttackTypeMeleeRanged", - }, - - /** - * Define the file paths to icon images - */ - attackTypesIcons: { - melee: "systems/ds4/assets/official/DS4-MAT.png", - meleeRanged: "systems/ds4/assets/official/DS4-MRA.png", - ranged: "systems/ds4/assets/official/DS4-RAT.png", - }, - - /** - * Define the file paths to icon images - */ - spellTypesIcons: { - spellcasting: "systems/ds4/assets/official/DS4-SPC.png", - targetedSpellcasting: "systems/ds4/assets/official/DS4-TSC.png", - }, - - /** - * Define the set of item availabilties - */ - itemAvailabilities: { - unset: "DS4.ItemAvailabilityUnset", - hamlet: "DS4.ItemAvailabilityHamlet", - village: "DS4.ItemAvailabilityVilage", - city: "DS4.ItemAvailabilityCity", - elves: "DS4.ItemAvailabilityElves", - dwarves: "DS4.ItemAvailabilityDwarves", - nowhere: "DS4.ItemAvailabilityNowhere", - }, - - /** - * Define the set of item types - */ - itemTypes: { - weapon: "DS4.ItemTypeWeapon", - armor: "DS4.ItemTypeArmor", - shield: "DS4.ItemTypeShield", - spell: "DS4.ItemTypeSpell", - trinket: "DS4.ItemTypeTrinket", - equipment: "DS4.ItemTypeEquipment", - talent: "DS4.ItemTypeTalent", - racialAbility: "DS4.ItemTypeRacialAbility", - language: "DS4.ItemTypeLanguage", - alphabet: "DS4.ItemTypeAlphabet", - specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", - }, - - /** - * Define the set of armor types, a character may only wear one item of each at any given time - */ - armorTypes: { - body: "DS4.ArmorTypeBody", - helmet: "DS4.ArmorTypeHelmet", - vambrace: "DS4.ArmorTypeVambrace", - greaves: "DS4.ArmorTypeGreaves", - vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", - }, - - /** - * Define abbreviations for the armor types - */ - armorTypesAbbr: { - body: "DS4.ArmorTypeBodyAbbr", - helmet: "DS4.ArmorTypeHelmetAbbr", - vambrace: "DS4.ArmorTypeVambraceAbbr", - greaves: "DS4.ArmorTypeGreavesAbbr", - vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", - }, - - /** - * Define the set of armor materials, used to determine if a characer may wear the armor without additional penalties - */ - armorMaterialTypes: { - cloth: "DS4.ArmorMaterialTypeCloth", - leather: "DS4.ArmorMaterialTypeLeather", - chain: "DS4.ArmorMaterialTypeChain", - plate: "DS4.ArmorMaterialTypePlate", - }, - - /** - * Define the abbreviations of armor materials - */ - armorMaterialTypesAbbr: { - cloth: "DS4.ArmorMaterialTypeClothAbbr", - leather: "DS4.ArmorMaterialTypeLeatherAbbr", - chain: "DS4.ArmorMaterialTypeChainAbbr", - plate: "DS4.ArmorMaterialTypePlateAbbr", - }, - - spellTypes: { - spellcasting: "DS4.SpellTypeSpellcasting", - targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", - }, - - spellCategories: { - healing: "DS4.SpellCategoryHealing", - fire: "DS4.SpellCategoryFire", - ice: "DS4.SpellCategoryIce", - light: "DS4.SpellCategoryLight", - darkness: "DS4.SpellCategoryDarkness", - mindAffecting: "DS4.SpellCategoryMindAffecting", - electricity: "DS4.SpellCategoryElectricity", - none: "DS4.SpellCategoryNone", - unset: "DS4.SpellCategoryUnset", - }, - - /** - * Define the set of actor types - */ - actorTypes: { - character: "DS4.ActorTypeCharacter", - creature: "DS4.ActorTypeCreature", - }, - - /** - * Define the set of attributes an actor has - */ - attributes: { - body: "DS4.AttributeBody", - mobility: "DS4.AttributeMobility", - mind: "DS4.AttributeMind", - }, - - /** - * Define the set of traits an actor has - */ - traits: { - strength: "DS4.TraitStrength", - agility: "DS4.TraitAgility", - intellect: "DS4.TraitIntellect", - constitution: "DS4.TraitConstitution", - dexterity: "DS4.TraitDexterity", - aura: "DS4.TraitAura", - }, - - /** - * Define the set of combat values an actor has - */ - combatValues: { - hitPoints: "DS4.CombatValuesHitPoints", - defense: "DS4.CombatValuesDefense", - initiative: "DS4.CombatValuesInitiative", - movement: "DS4.CombatValuesMovement", - meleeAttack: "DS4.CombatValuesMeleeAttack", - rangedAttack: "DS4.CombatValuesRangedAttack", - spellcasting: "DS4.CombatValuesSpellcasting", - targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", - }, - - /** - * Define the base info of a character - */ - characterBaseInfo: { - race: "DS4.CharacterBaseInfoRace", - class: "DS4.CharacterBaseInfoClass", - heroClass: "DS4.CharacterBaseInfoHeroClass", - culture: "DS4.CharacterBaseInfoCulture", - }, - - /** - * Define the progression info of a character - */ - characterProgression: { - level: "DS4.CharacterProgressionLevel", - experiencePoints: "DS4.CharacterProgressionExperiencePoints", - talentPoints: "DS4.CharacterProgressionTalentPoints", - progressPoints: "DS4.CharacterProgressionProgressPoints", - }, - - /** - * Define the language info of a character - */ - characterLanguage: { - languages: "DS4.CharacterLanguageLanguages", - alphabets: "DS4.CharacterLanguageAlphabets", - }, - - /** - * Define the profile info of a character - */ - characterProfile: { - biography: "DS4.CharacterProfileBiography", - gender: "DS4.CharacterProfileGender", - birthday: "DS4.CharacterProfileBirthday", - birthplace: "DS4.CharacterProfileBirthplace", - age: "DS4.CharacterProfileAge", - height: "DS4.CharacterProfileHeight", - hairColor: "DS4.CharacterProfileHairColor", - weight: "DS4.CharacterProfileWeight", - eyeColor: "DS4.CharacterProfileEyeColor", - specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", - }, - - /** - * Define the profile info types for handlebars of a character - */ - characterProfileDTypes: { - biography: "String", - gender: "String", - birthday: "String", - birthplace: "String", - age: "Number", - height: "Number", - hairColor: "String", - weight: "Number", - eyeColor: "String", - specialCharacteristics: "String", - }, - - /** - * Define currency elements of a character - */ - characterCurrency: { - gold: "DS4.CharacterCurrencyGold", - silver: "DS4.CharacterCurrencySilver", - copper: "DS4.CharacterCurrencyCopper", - }, - - /** - * Define the different creature types a creature can be - */ - creatureTypes: { - animal: "DS4.CreatureTypeAnimal", - construct: "DS4.CreatureTypeConstruct", - humanoid: "DS4.CreatureTypeHumanoid", - magicalEntity: "DS4.CreatureTypeMagicalEntity", - plantBeing: "DS4.CreatureTypePlantBeing", - undead: "DS4.CreatureTypeUndead", - }, - - /** - * Define the different size categories creatures fall into - */ - creatureSizeCategories: { - tiny: "DS4.CreatureSizeCategoryTiny", - small: "DS4.CreatureSizeCategorySmall", - normal: "DS4.CreatureSizeCategoryNormal", - large: "DS4.CreatureSizeCategoryLarge", - huge: "DS4.CreatureSizeCategoryHuge", - colossal: "DS4.CreatureSizeCategoryColossal", - }, - - /** - * Define the base info of a creature - */ - creatureBaseInfo: { - loot: "DS4.CreatureBaseInfoLoot", - foeFactor: "DS4.CreatureBaseInfoFoeFactor", - creatureType: "DS4.CreatureBaseInfoCreatureType", - sizeCategory: "DS4.CreatureBaseInfoSizeCategory", - experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", - description: "DS4.CreatureBaseInfoDescription", - }, - - /** - * Define translations for available distance units - */ - distanceUnits: { - meter: "DS4.UnitMeters", - kilometer: "DS4.UnitKilometers", - custom: "DS4.UnitCustom", - }, - /** - * Define abbreviations for available distance units - */ - distanceUnitsAbbr: { - meter: "DS4.UnitMetersAbbr", - kilometer: "DS4.UnitKilometersAbbr", - custom: "DS4.UnitCustomAbbr", - }, - - /** - * Define translations for available distance units - */ - temporalUnits: { - rounds: "DS4.UnitRounds", - minutes: "DS4.UnitMinutes", - hours: "DS4.UnitHours", - days: "DS4.UnitDays", - custom: "DS4.UnitCustom", - }, - - /** - * Define abbreviations for available units - */ - temporalUnitsAbbr: { - rounds: "DS4.UnitRoundsAbbr", - minutes: "DS4.UnitMinutesAbbr", - hours: "DS4.UnitHoursAbbr", - days: "DS4.UnitDaysAbbr", - custom: "DS4.UnitCustomAbbr", - }, - - /** - * Define localization strings for Chat Visibility - */ - chatVisibilities: { - roll: "DS4.ChatVisibilityRoll", - gmroll: "DS4.ChatVisibilityGmRoll", - blindroll: "DS4.ChatVisibilityBlindRoll", - selfroll: "DS4.ChatVisibilitySelfRoll", - }, -}; diff --git a/src/module/ds4.ts b/src/module/ds4.ts deleted file mode 100644 index 131e6675..00000000 --- a/src/module/ds4.ts +++ /dev/null @@ -1,125 +0,0 @@ -// Import Modules -import { DS4Actor } from "./actor/actor"; -import { DS4Item } from "./item/item"; -import { DS4ItemSheet } from "./item/item-sheet"; -import { DS4 } from "./config"; -import { DS4Check } from "./rolls/check"; -import { DS4CharacterActorSheet } from "./actor/sheets/character-sheet"; -import { DS4CreatureActorSheet } from "./actor/sheets/creature-sheet"; -import { createCheckRoll } from "./rolls/check-factory"; - -Hooks.once("init", async function () { - console.log(`DS4 | Initializing the DS4 Game System\n${DS4.ASCII}`); - - game.ds4 = { - DS4Actor, - DS4Item, - DS4, - createCheckRoll, - }; - - // Record configuration - CONFIG.DS4 = DS4; - - // Define custom Entity classes - CONFIG.Actor.entityClass = DS4Actor as typeof Actor; - CONFIG.Item.entityClass = DS4Item as typeof Item; - - // Define localized type labels - CONFIG.Actor.typeLabels = DS4.actorTypes; - CONFIG.Item.typeLabels = DS4.itemTypes; - - // Configure Dice - CONFIG.Dice.types = [Die, DS4Check]; - CONFIG.Dice.terms = { - c: Coin, - d: Die, - s: DS4Check, - }; - - // Register sheet application classes - Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet("ds4", DS4CharacterActorSheet, { types: ["character"], makeDefault: true }); - Actors.registerSheet("ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); - Items.unregisterSheet("core", ItemSheet); - Items.registerSheet("ds4", DS4ItemSheet, { makeDefault: true }); - - registerHandlebarsPartials(); -}); - -async function registerHandlebarsPartials() { - const templatePaths = [ - "systems/ds4/templates/item/partials/sheet-header.hbs", - "systems/ds4/templates/item/partials/description.hbs", - "systems/ds4/templates/item/partials/details.hbs", - "systems/ds4/templates/item/partials/effects.hbs", - "systems/ds4/templates/item/partials/body.hbs", - "systems/ds4/templates/actor/partials/items-overview.hbs", - "systems/ds4/templates/actor/partials/talents-abilities-overview.hbs", - "systems/ds4/templates/actor/partials/spells-overview.hbs", - "systems/ds4/templates/actor/partials/overview-add-button.hbs", - "systems/ds4/templates/actor/partials/overview-control-buttons.hbs", - "systems/ds4/templates/actor/partials/attributes-traits.hbs", - "systems/ds4/templates/actor/partials/combat-values.hbs", - "systems/ds4/templates/actor/partials/profile.hbs", - "systems/ds4/templates/actor/partials/character-progression.hbs", - "systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs", - "systems/ds4/templates/actor/partials/character-inventory.hbs", - "systems/ds4/templates/actor/partials/creature-inventory.hbs", - ]; - return loadTemplates(templatePaths); -} - -/* -------------------------------------------- */ -/* Foundry VTT Setup */ -/* -------------------------------------------- */ - -/** - * This function runs after game data has been requested and loaded from the servers, so entities exist - */ -Hooks.once("setup", function () { - // Localize CONFIG objects once up-front - const toLocalize = [ - "attackTypes", - "itemAvailabilities", - "itemTypes", - "armorTypes", - "armorTypesAbbr", - "armorMaterialTypes", - "armorMaterialTypesAbbr", - "armorMaterialTypes", - "spellTypes", - "spellCategories", - "attributes", - "traits", - "combatValues", - "characterBaseInfo", - "characterProgression", - "characterLanguage", - "characterProfile", - "characterCurrency", - "creatureTypes", - "creatureSizeCategories", - "creatureBaseInfo", - "temporalUnits", - "temporalUnitsAbbr", - "distanceUnits", - "distanceUnitsAbbr", - "chatVisibilities", - ]; - - // Exclude some from sorting where the default order matters - const noSort = ["attributes", "traits", "combatValues", "creatureSizeCategories"]; - - // Localize and sort CONFIG objects - for (const o of toLocalize) { - const localized = Object.entries(CONFIG.DS4[o]).map((e) => { - return [e[0], game.i18n.localize(e[1] as string)]; - }); - if (!noSort.includes(o)) localized.sort((a, b) => a[1].localeCompare(b[1])); - CONFIG.DS4[o] = localized.reduce((obj, e) => { - obj[e[0]] = e[1]; - return obj; - }, {}); - } -}); diff --git a/src/module/item/item-data.ts b/src/module/item/item-data.ts deleted file mode 100644 index 64ee17f2..00000000 --- a/src/module/item/item-data.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { ModifiableData } from "../common/common-data"; -import { DS4 } from "../config"; - -export type ItemType = keyof typeof DS4.itemTypes; - -export type DS4ItemDataType = - | DS4Weapon - | DS4Armor - | DS4Shield - | DS4Spell - | DS4Trinket - | DS4Equipment - | DS4Talent - | DS4RacialAbility - | DS4Language - | DS4Alphabet - | DS4SpecialCreatureAbility; - -// types - -interface DS4Weapon extends DS4ItemBase, DS4ItemPhysical, DS4ItemEquipable { - attackType: "melee" | "ranged" | "meleeRanged"; - weaponBonus: number; - opponentDefense: number; -} - -interface DS4Armor extends DS4ItemBase, DS4ItemPhysical, DS4ItemEquipable, DS4ItemProtective { - armorMaterialType: "cloth" | "leather" | "chain" | "plate"; - armorType: "body" | "helmet" | "vambrace" | "greaves" | "vambraceGreaves"; -} - -export interface DS4Talent extends DS4ItemBase { - rank: DS4TalentRank; -} - -interface DS4TalentRank extends ModifiableData { - max: number; -} - -interface DS4Spell extends DS4ItemBase, DS4ItemEquipable { - spellType: "spellcasting" | "targetedSpellcasting"; - bonus: string; - spellCategory: - | "healing" - | "fire" - | "ice" - | "light" - | "darkness" - | "mindAffecting" - | "electricity" - | "none" - | "unset"; - maxDistance: UnitData; - effectRadius: UnitData; - duration: UnitData; - cooldownDuration: UnitData; - scrollPrice: number; -} - -interface DS4Shield extends DS4ItemBase, DS4ItemPhysical, DS4ItemEquipable, DS4ItemProtective {} -interface DS4Trinket extends DS4ItemBase, DS4ItemPhysical, DS4ItemEquipable {} -interface DS4Equipment extends DS4ItemBase, DS4ItemPhysical {} -type DS4RacialAbility = DS4ItemBase; -type DS4Language = DS4ItemBase; -type DS4Alphabet = DS4ItemBase; -interface DS4SpecialCreatureAbility extends DS4ItemBase { - experiencePoints: number; -} - -// templates - -interface DS4ItemBase { - description: string; -} -interface DS4ItemPhysical { - quantity: number; - price: number; - availability: "hamlet" | "village" | "city" | "elves" | "dwarves" | "nowhere" | "unset"; - storageLocation: string; -} - -export function isDS4ItemDataTypePhysical(input: DS4ItemDataType): boolean { - return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input; -} - -interface DS4ItemEquipable { - equipped: boolean; -} - -interface DS4ItemProtective { - armorValue: number; -} - -interface UnitData { - value: string; - unit: UnitType; -} -type TemporalUnit = "rounds" | "minutes" | "hours" | "days" | "custom"; -type DistanceUnit = "meter" | "kilometer" | "custom"; diff --git a/src/module/item/item-sheet.ts b/src/module/item/item-sheet.ts deleted file mode 100644 index 8d8df70f..00000000 --- a/src/module/item/item-sheet.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { DS4Item } from "./item"; -import { DS4ItemDataType, isDS4ItemDataTypePhysical } from "./item-data"; - -/** - * Extend the basic ItemSheet with some very simple modifications - * @extends {ItemSheet} - */ -export class DS4ItemSheet extends ItemSheet { - /** @override */ - static get defaultOptions(): FormApplicationOptions { - return mergeObject(super.defaultOptions, { - width: 530, - height: 400, - classes: ["ds4", "sheet", "item"], - tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }], - }); - } - - /** @override */ - get template(): string { - const path = "systems/ds4/templates/item"; - return `${path}/${this.item.data.type}-sheet.hbs`; - } - - /* -------------------------------------------- */ - - /** @override */ - getData(): ItemSheetData { - const data = { - ...super.getData(), - config: CONFIG.DS4, - isOwned: this.item.isOwned, - actor: this.item.actor, - isPhysical: isDS4ItemDataTypePhysical(this.item.data.data), - }; - console.log(data); - return data; - } - - /* -------------------------------------------- */ - - /** @override */ - setPosition(options: ApplicationPosition = {}): ApplicationPosition { - const position = super.setPosition(options); - if ("find" in this.element) { - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - } else { - console.log("Failure setting position."); - } - return position; - } - - /* -------------------------------------------- */ - - /** @override */ - activateListeners(html: JQuery): void { - super.activateListeners(html); - - if (!this.options.editable) return; - - html.find(".effect-control").on("click", this._onManageActiveEffect.bind(this)); - } - - /** - * Handle management of ActiveEffects. - * @param {Event} event The originating click event - */ - private async _onManageActiveEffect(event: JQuery.ClickEvent): Promise { - event.preventDefault(); - - if (this.item.isOwned) { - return ui.notifications.warn(game.i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem")); - } - const a = event.currentTarget; - const li = $(a).parents(".effect"); - - switch (a.dataset["action"]) { - case "create": - return this._createActiveEffect(); - case "edit": - const effect = this.item.effects.get(li.data("effectId")); - return effect.sheet.render(true); - case "delete": { - return this.item.deleteEmbeddedEntity("ActiveEffect", li.data("effectId")); - } - } - } - - /** - * Create a new ActiveEffect for the item using default data. - */ - private async _createActiveEffect(): Promise { - const label = `New Effect`; - - const createData = { - label: label, - changes: [], - duration: {}, - transfer: true, - }; - - const effect = await ActiveEffect.create(createData, this.item); - return effect.create({}); - } -} diff --git a/src/module/item/item.ts b/src/module/item/item.ts deleted file mode 100644 index e9a1aa3e..00000000 --- a/src/module/item/item.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { DS4Actor } from "../actor/actor"; -import { DS4ActorDataType } from "../actor/actor-data"; -import { DS4ItemDataType, DS4Talent } from "./item-data"; - -/** - * Extend the basic Item with some very simple modifications. - * @extends {Item} - */ -export class DS4Item extends Item { - /** - * Augment the basic Item data model with additional dynamic data. - */ - prepareData(): void { - super.prepareData(); - this.prepareDerivedData(); - - // Get the Item's data - // const itemData = this.data; - // const actorData = this.actor ? this.actor.data : {}; - // const data = itemData.data; - } - - prepareDerivedData(): void { - if (this.type === "talent") { - const data = this.data.data as DS4Talent; - data.rank.total = data.rank.base + data.rank.mod; - } - } -} diff --git a/src/module/rolls/check-factory.ts b/src/module/rolls/check-factory.ts deleted file mode 100644 index 066202d6..00000000 --- a/src/module/rolls/check-factory.ts +++ /dev/null @@ -1,237 +0,0 @@ -import { DS4 } from "../config"; - -/** - * Provides default values for all arguments the `CheckFactory` expects. - */ -class DefaultCheckOptions implements DS4CheckFactoryOptions { - maxCritSuccess = 1; - minCritFailure = 20; - useSlayingDice = false; - rollMode: DS4RollMode = "roll"; - - mergeWith(other: Partial): DS4CheckFactoryOptions { - return { ...this, ...other } as DS4CheckFactoryOptions; - } -} - -/** - * Singleton reference for default value extraction. - */ -const defaultCheckOptions = new DefaultCheckOptions(); - -/** - * Most basic class responsible for generating the chat formula and passing it to the chat as roll. - */ -class CheckFactory { - constructor( - private checkTargetValue: number, - private gmModifier: number, - passedOptions: Partial = {}, - ) { - this.checkOptions = new DefaultCheckOptions().mergeWith(passedOptions); - } - - private checkOptions: DS4CheckFactoryOptions; - - async execute(): Promise { - const rollCls: typeof Roll = CONFIG.Dice.rolls[0]; - - const formula = [ - "ds", - this.createTargetValueTerm(), - this.createCritTerm(), - this.createSlayingDiceTerm(), - ].filterJoin(""); - const roll = new rollCls(formula); - - const rollModeTemplate = this.checkOptions.rollMode; - console.log(rollModeTemplate); - return roll.toMessage({}, { rollMode: rollModeTemplate, create: true }); - } - - // Term generators - createTargetValueTerm(): string | null { - if (this.checkTargetValue !== null) { - return "v" + (this.checkTargetValue + this.gmModifier); - } else { - return null; - } - } - - createCritTerm(): string | null { - const minCritRequired = this.checkOptions.minCritFailure !== defaultCheckOptions.minCritFailure; - const maxCritRequired = this.checkOptions.maxCritSuccess !== defaultCheckOptions.maxCritSuccess; - - if (minCritRequired || maxCritRequired) { - return "c" + (this.checkOptions.maxCritSuccess ?? "") + "," + (this.checkOptions.minCritFailure ?? ""); - } else { - return null; - } - } - - createSlayingDiceTerm(): string | null { - return this.checkOptions.useSlayingDice ? "x" : null; - } -} - -/** - * Asks the user for all unknown/necessary information and passes them on to perform a roll. - * @param targetValue {number} The Check Target Number ("CTN") - * @param options {Partial} Options changing the behaviour of the roll and message. - */ -export async function createCheckRoll( - targetValue: number, - options: Partial = {}, -): Promise { - // Ask for additional required data; - const gmModifierData = await askGmModifier(targetValue, options); - - const newOptions: Partial = { - maxCritSuccess: gmModifierData.maxCritSuccess ?? options.maxCritSuccess ?? undefined, - minCritFailure: gmModifierData.minCritFailure ?? options.minCritFailure ?? undefined, - useSlayingDice: gmModifierData.useSlayingDice ?? options.useSlayingDice ?? undefined, - rollMode: gmModifierData.rollMode ?? options.rollMode ?? undefined, - }; - - // Create Factory - const cf = new CheckFactory(gmModifierData.checkTargetValue, gmModifierData.gmModifier, newOptions); - - // Possibly additional processing - - // Execute roll - await cf.execute(); -} - -/** - * Responsible for rendering the modal interface asking for the modifier specified by GM and (currently) additional data. - * - * @notes - * At the moment, this asks for more data than it will do after some iterations. - * - * @returns {Promise} The data given by the user. - */ -async function askGmModifier( - targetValue: number, - options: Partial = {}, - { template, title }: { template?: string; title?: string } = {}, -): Promise { - // Render model interface and return value - const usedTemplate = template ?? "systems/ds4/templates/roll/roll-options.hbs"; - const usedTitle = title ?? game.i18n.localize("DS4.RollDialogDefaultTitle"); - const templateData = { - cssClass: "roll-option", - title: usedTitle, - checkTargetValue: targetValue, - maxCritSuccess: options.maxCritSuccess ?? defaultCheckOptions.maxCritSuccess, - minCritFailure: options.minCritFailure ?? defaultCheckOptions.minCritFailure, - rollModes: rollModes, - config: DS4, - }; - const renderedHtml = await renderTemplate(usedTemplate, templateData); - - const dialogPromise = new Promise((resolve) => { - new Dialog( - { - title: usedTitle, - close: () => { - // Don't do anything - }, - content: renderedHtml, - buttons: { - ok: { - label: game.i18n.localize("DS4.RollDialogOkButton"), - callback: (html: HTMLElement | JQuery) => { - if (!("jquery" in html)) { - throw new Error( - game.i18n.format("DS4.ErrorUnexpectedHtmlType", { - exType: "JQuery", - realType: "HTMLElement", - }), - ); - } else { - const innerForm = html[0].querySelector("form"); - resolve(innerForm); - } - }, - }, - cancel: { - label: game.i18n.localize("DS4.RollDialogCancelButton"), - callback: () => { - // Don't do anything - }, - }, - }, - default: "ok", - }, - {}, - ).render(true); - }); - const dialogForm = await dialogPromise; - return parseDialogFormData(dialogForm, targetValue); -} - -/** - * Extracts Dialog data from the returned DOM element. - * @param formData {HTMLFormElement} The filed dialog - * @param targetValue {number} The previously known target value (slated for removal once data automation is available) - */ -function parseDialogFormData(formData: HTMLFormElement, targetValue: number): IntermediateGmModifierData { - return { - checkTargetValue: parseInt(formData["ctv"]?.value) ?? targetValue, - gmModifier: parseInt(formData["gmmod"]?.value) ?? 0, - maxCritSuccess: parseInt(formData["maxcoup"]?.value) ?? defaultCheckOptions.maxCritSuccess, - minCritFailure: parseInt(formData["minfumble"]?.value) ?? defaultCheckOptions.minCritFailure, - useSlayingDice: false, - rollMode: formData["visibility"]?.value ?? defaultCheckOptions.rollMode, - }; -} - -/** - * Contains data that needs retrieval from an interactive Dialog. - */ -interface GmModifierData { - gmModifier: number; - rollMode: DS4RollMode; -} - -/** - * Contains *CURRENTLY* necessary Data for drafting a roll. - * - * @deprecated - * Quite a lot of this information is requested due to a lack of automation: - * - maxCritSuccess - * - minCritFailure - * - useSlayingDice - * - checkTargetValue - * - * They will and should be removed once effects and data retrieval is in place. - * If a "raw" roll dialog is necessary, create another pre-porcessing Dialog - * class asking for the required information. - * This interface should then be replaced with the `GmModifierData`. - */ -interface IntermediateGmModifierData extends GmModifierData { - checkTargetValue: number; - gmModifier: number; - maxCritSuccess: number; - minCritFailure: number; - // TODO: In final version from system settings - useSlayingDice: boolean; - rollMode: DS4RollMode; -} - -/** - * The minimum behavioural options that need to be passed to the factory. - */ -export interface DS4CheckFactoryOptions { - maxCritSuccess: number; - minCritFailure: number; - useSlayingDice: boolean; - rollMode: DS4RollMode; -} - -/** - * Defines all possible roll modes, both for iterating and typing. - */ -const rollModes = ["roll", "gmroll", "blindroll", "selfroll"] as const; -type DS4RollModeTuple = typeof rollModes; -export type DS4RollMode = DS4RollModeTuple[number]; diff --git a/src/module/rolls/check.ts b/src/module/rolls/check.ts deleted file mode 100644 index 38773fb3..00000000 --- a/src/module/rolls/check.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { RollResult, RollResultStatus } from "./roll-data"; -import { ds4roll } from "./roll-executor"; - -interface TermData { - number: number; - faces: number; - modifiers: Array; - options: Record; -} - -/** - * Implements DS4 Checks as an emulated "dice throw". - * - * @notes - * Be aware that, even though this behaves like one roll, it actually throws several ones internally - * - * @example - * - Roll a check against a Check Target Number (CTV) of 18: `/r dsv18` - * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` - * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2,19` - * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` - * - Roll a check with exploding dice: `/r dsv34x` - */ -export class DS4Check extends DiceTerm { - constructor(termData: Partial) { - super({ - number: termData.number, - faces: termData.faces, // should be null - modifiers: termData.modifiers ?? [], - options: termData.options ?? {}, - }); - - // Store and parse target value. - const targetValueModifier = this.modifiers.filter((m) => m[0] === "v")[0]; - const tvRgx = new RegExp("v([0-9]+)?"); - const tvMatch = targetValueModifier?.match(tvRgx); - if (tvMatch) { - const [parseTargetValue] = tvMatch.slice(1); - this.targetValue = parseTargetValue ? parseInt(parseTargetValue) : DS4Check.DEFAULT_TARGET_VALUE; - } - - // Store and parse min/max crit - const critModifier = this.modifiers.filter((m) => m[0] === "c")[0]; - const cmRgx = new RegExp("c([0-9]+)?,([0-9]+)?"); - const cmMatch = critModifier?.match(cmRgx); - if (cmMatch) { - const [parseMaxCritSuccess, parseMinCritFailure] = cmMatch.slice(1); - this.maxCritSuccess = parseMaxCritSuccess - ? parseInt(parseMaxCritSuccess) - : DS4Check.DEFAULT_MAX_CRIT_SUCCESS; - this.minCritFailure = parseMinCritFailure - ? parseInt(parseMinCritFailure) - : DS4Check.DEFAULT_MIN_CRIT_FAILURE; - if (this.minCritFailure <= this.maxCritSuccess) - throw new SyntaxError(game.i18n.localize("DS4.ErrorDiceCritOverlap")); - } - } - - success = null; - failure = null; - targetValue = DS4Check.DEFAULT_TARGET_VALUE; - minCritFailure = DS4Check.DEFAULT_MIN_CRIT_FAILURE; - maxCritSuccess = DS4Check.DEFAULT_MAX_CRIT_SUCCESS; - - /** - * @override - */ - roll({ minimize = false, maximize = false } = {}): RollResult { - const rollResult = this.rollWithDifferentBorders({ minimize, maximize }); - this.results.push(rollResult); - if (rollResult.status == RollResultStatus.CRITICAL_SUCCESS) { - this.success = true; - } else if (rollResult.status == RollResultStatus.CRITICAL_FAILURE) { - this.failure = true; - } - return rollResult; - } - - rollWithDifferentBorders({ minimize = false, maximize = false } = {}, slayingDiceRepetition = false): RollResult { - const targetValueToUse = this.targetValue; - if (minimize) { - return new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [20], true); - } else if (maximize) { - const maximizedDice = Array(Math.ceil(targetValueToUse / 20)).fill(1); - return new RollResult(targetValueToUse, RollResultStatus.CRITICAL_SUCCESS, maximizedDice, true); - } else { - return ds4roll(targetValueToUse, { - maxCritSuccess: this.maxCritSuccess, - minCritFailure: this.minCritFailure, - slayingDiceRepetition: slayingDiceRepetition, - useSlayingDice: slayingDiceRepetition, - }); - } - } - - /** Term Modifiers */ - noop(): this { - return this; - } - - // DS4 only allows recursive explosions - explode(modifier: string): this { - const rgx = /[xX]/; - const match = modifier.match(rgx); - if (!match) return this; - - this.results = (this.results as Array) - .map((r) => { - const intermediateResults = [r]; - - let checked = 0; - while (checked < intermediateResults.length) { - const r = (intermediateResults as Array)[checked]; - checked++; - if (!r.active) continue; - - if (r.dice[0] <= this.maxCritSuccess) { - r.exploded = true; - const newRoll = this.rollWithDifferentBorders({}, true); - intermediateResults.push(newRoll); - } - - if (checked > 1000) throw new Error(game.i18n.localize("DS4.ErrorExplodingRecursionLimitExceeded")); - } - return intermediateResults; - }) - .reduce((acc, cur) => { - return acc.concat(cur); - }, []); - } - - static readonly DEFAULT_TARGET_VALUE = 10; - static readonly DEFAULT_MAX_CRIT_SUCCESS = 1; - static readonly DEFAULT_MIN_CRIT_FAILURE = 20; - static DENOMINATION = "s"; - static MODIFIERS = { - x: "explode", - c: "noop", // Modifier is consumed in constructor for target value - v: "noop", // Modifier is consumed in constructor for target value - }; -} diff --git a/src/module/rolls/roll-data.ts b/src/module/rolls/roll-data.ts deleted file mode 100644 index 78329e44..00000000 --- a/src/module/rolls/roll-data.ts +++ /dev/null @@ -1,43 +0,0 @@ -export interface RollOptions { - maxCritSuccess: number; - minCritFailure: number; - useSlayingDice: boolean; - slayingDiceRepetition: boolean; -} - -export class DefaultRollOptions implements RollOptions { - public maxCritSuccess = 1; - public minCritFailure = 20; - public useSlayingDice = false; - public slayingDiceRepetition = false; - - mergeWith(other: Partial): RollOptions { - return { ...this, ...other } as RollOptions; - } -} - -export class RollResult { - constructor( - public result: number, - public status: RollResultStatus, - public dice: Array, - public active: boolean = true, - public exploded: boolean = false, - ) { - if (this.status == RollResultStatus.CRITICAL_FAILURE) { - this.failure = true; - } else if (this.status == RollResultStatus.CRITICAL_SUCCESS) { - this.success = true; - } - } - - public failure: boolean | void = undefined; - public success: boolean | void = undefined; -} - -export enum RollResultStatus { - FAILURE = "FAILURE", - SUCCESS = "SUCCESS", - CRITICAL_FAILURE = "CRITICAL_FAILURE", - CRITICAL_SUCCESS = "CRITICAL_SUCCESS", -} diff --git a/src/module/rolls/roll-executor.ts b/src/module/rolls/roll-executor.ts deleted file mode 100644 index c7e187b1..00000000 --- a/src/module/rolls/roll-executor.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { DefaultRollOptions, RollOptions, RollResult, RollResultStatus } from "./roll-data"; -import { DS4RollProvider } from "./roll-provider"; -import { calculateRollResult, isDiceSwapNecessary, isSlayingDiceRepetition, separateCriticalHits } from "./roll-utils"; - -/** - * Performs a roll against a check target number, e.g. for usage in battle, but not for herbs. - * @param {number} checkTargetValue the final CTN, including all static modifiers. - * @param {Partial} rollOptions optional, final option override that affect the checks outcome, e.g. different values for crits or whether slaying dice are used. - * @param {Array} dice optional, pass already thrown dice that are used instead of rolling new ones. - */ -export function ds4roll( - checkTargetValue: number, - rollOptions: Partial = {}, - dice: Array = null, -): RollResult { - if (checkTargetValue <= 20) { - return rollCheckSingleDie(checkTargetValue, rollOptions, dice); - } else { - return rollCheckMultipleDice(checkTargetValue, rollOptions, dice); - } -} - -/** - * Performs a roll against a single die (CTN less than or equal 20). - * - * @internal - * This is not intended for direct usage. Use - * {@link ds4roll | the function that is not bound to an amount of Dice} instead. - * - * @param {number} checkTargetValue - The target value to check against. - * @param {RollOptions} rollOptions - Options that affect the checks outcome, e.g. different values for crits or whether slaying dice are used. - * @param {Array} dice optional, pass already thrown dice that are used instead of rolling new ones. - * - * @returns {RollResult} An object containing detailed information on the roll result. - */ -export function rollCheckSingleDie( - checkTargetValue: number, - rollOptions: Partial, - dice: Array = null, -): RollResult { - const usedOptions = new DefaultRollOptions().mergeWith(rollOptions); - - if (dice?.length != 1) { - dice = [new DS4RollProvider().getNextRoll()]; - } - const usedDice = dice; - const rolledDie = usedDice[0]; - - if (rolledDie <= usedOptions.maxCritSuccess) { - return new RollResult(checkTargetValue, RollResultStatus.CRITICAL_SUCCESS, usedDice, true); - } else if (rolledDie >= usedOptions.minCritFailure && !isSlayingDiceRepetition(usedOptions)) { - return new RollResult(0, RollResultStatus.CRITICAL_FAILURE, usedDice, true); - } else { - if (rolledDie <= checkTargetValue) { - return new RollResult(rolledDie, RollResultStatus.SUCCESS, usedDice, true); - } else { - return new RollResult(0, RollResultStatus.FAILURE, usedDice, true); - } - } -} - -/** - * Performs a roll against a multitude of die (CTN greater than 20). - * - * @internal - * This is not intended for direct usage. Use - * {@link ds4roll | the function that is not bound to an amount of Dice} instead. - * - * @param {number} targetValue- - The target value to check against. - * @param {RollOptions} rollOptions - Options that affect the checks outcome, e.g. different values for crits or whether slaying dice are used. - * @param {Array} dice - Optional array of dice values to consider instead of rolling new ones. - * - * @returns {RollResult} An object containing detailed information on the roll result. - */ -export function rollCheckMultipleDice( - targetValue: number, - rollOptions: Partial, - dice: Array = null, -): RollResult { - const usedOptions = new DefaultRollOptions().mergeWith(rollOptions); - const remainderTargetValue = targetValue % 20; - const numberOfDice = Math.ceil(targetValue / 20); - - if (!dice || dice.length != numberOfDice) { - dice = new DS4RollProvider().getNextRolls(numberOfDice); - } - const usedDice = dice; - - const firstResult = usedDice[0]; - const slayingDiceRepetition = isSlayingDiceRepetition(usedOptions); - - // Slaying Dice require a different handling. - if (firstResult >= usedOptions.minCritFailure && !slayingDiceRepetition) { - return new RollResult(0, RollResultStatus.CRITICAL_FAILURE, usedDice, true); - } - - const [critSuccesses, otherRolls] = separateCriticalHits(usedDice, usedOptions); - - const swapLastWithCrit: boolean = isDiceSwapNecessary([critSuccesses, otherRolls], remainderTargetValue); - - let sortedRollResults: Array; - - if (swapLastWithCrit) { - const diceToMove = critSuccesses[0]; - const remainingSuccesses = critSuccesses.slice(1); - sortedRollResults = remainingSuccesses.concat(otherRolls).concat([diceToMove]); - } else { - sortedRollResults = critSuccesses.concat(otherRolls); - } - - const evaluationResult = calculateRollResult(sortedRollResults, remainderTargetValue, usedOptions); - - if (firstResult <= usedOptions.maxCritSuccess) { - return new RollResult(evaluationResult, RollResultStatus.CRITICAL_SUCCESS, usedDice, true); - } else { - return new RollResult(evaluationResult, RollResultStatus.SUCCESS, usedDice, true); - } -} diff --git a/src/module/rolls/roll-provider.ts b/src/module/rolls/roll-provider.ts deleted file mode 100644 index 86c55606..00000000 --- a/src/module/rolls/roll-provider.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Runtime-implementation of the {@link RollProvider}. - * - * @remarks - * Do not use for tests, it will inevitably fail because the `Roll` class is only provided from declarations, not as implementation! - */ -export class DS4RollProvider implements RollProvider { - getNextRoll(): number { - const rand = CONFIG.Dice.randomUniform(); - return Math.ceil(rand * 20); - } - - getNextRolls(amount: number): Array { - return Array(amount) - .fill(0) - .map(() => this.getNextRoll()); - } -} - -/** - * Provides methods to fetch one or multiple rolls. - */ -export interface RollProvider { - getNextRoll(): number; - getNextRolls(amount: number): Array; -} diff --git a/src/module/rolls/roll-utils.ts b/src/module/rolls/roll-utils.ts deleted file mode 100644 index a880a66d..00000000 --- a/src/module/rolls/roll-utils.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { RollOptions } from "./roll-data"; - -/** - * Separates critical hits ("Coups") from throws, that get counted with their regular value. - * - * @internal - * - * @private_remarks - * This uses an internal implementation of a `partition` method. Don't let typescript fool you, it will tell you that a partition method is available for Arrays, but that one's imported globally from foundry's declarations and not available during the test stage! - * - * @param {Array} dice - The dice values. - * @param {RollOptions} usedOptions - Options that affect the check's behaviour. - * @returns {[Array, Array]} A tuple containing two arrays of dice values, the first one containing all critical hits, the second one containing all others. Both arrays are sorted descendingby value. - */ -export function separateCriticalHits(dice: Array, usedOptions: RollOptions): CritsAndNonCrits { - const [critSuccesses, otherRolls] = partition(dice, (v: number) => { - return v <= usedOptions.maxCritSuccess; - }).map((a) => a.sort((r1, r2) => r2 - r1)); - - return [critSuccesses, otherRolls]; -} -/** - * Helper type to properly bind combinations of critical and non critical dice. - * @internal - */ -type CritsAndNonCrits = [Array, Array]; - -/** - * Partition an array into two, following a predicate. - * @param {Array} input The Array to split. - * @param {(T) => boolean} predicate The predicate by which to split. - * @returns A tuple of two arrays, the first one containing all elements from `input` that matched the predicate, the second one containing those that don't. - */ -// TODO: Move to generic utils method? -function partition(input: Array, predicate: (v: T) => boolean) { - return input.reduce( - (p: [Array, Array], cur: T) => { - if (predicate(cur)) { - p[0].push(cur); - } else { - p[1].push(cur); - } - return p; - }, - [[], []], - ); -} - -/** - * Calculates if a critical success should be moved to the last position in order to maximize the check's result. - * - * @example - * With regular dice rolling rules and a check target number of 31, the two dice 1 and 19 can get to a check result of 30. - * This method would be called as follows: - * ``` - * isDiceSwapNecessary([[1], [19]], 11) - * ``` - * - * @param {[Array, Array]} critsAndNonCrits the dice values thrown. It is assumed that both critical successes and other rolls are sorted descending. - * @param {number} remainingTargetValue the target value for the last dice, that is the only one that can be less than 20. - * @returns {boolean} Bool indicating whether a critical success has to be used as the last dice. - */ -export function isDiceSwapNecessary( - [critSuccesses, otherRolls]: CritsAndNonCrits, - remainingTargetValue: number, -): boolean { - if (critSuccesses.length == 0 || otherRolls.length == 0) { - return false; - } - const amountOfOtherRolls = otherRolls.length; - const lastDice = otherRolls[amountOfOtherRolls - 1]; - if (lastDice <= remainingTargetValue) { - return false; - } - - return lastDice + remainingTargetValue > 20; -} - -/** - * Checks if the options indicate that the current check is emerging from a crit success on a roll with slaying dice. - * - * @internal - * - * @param {RollOptions} opts the roll options to check against - */ -export function isSlayingDiceRepetition(opts: RollOptions): boolean { - return opts.useSlayingDice && opts.slayingDiceRepetition; -} - -/** - * Calculate the check value of an array of dice, assuming the dice should be used in order of occurence. - * - * @internal - * - * @param assignedRollResults The dice values in the order of usage. - * @param remainderTargetValue Target value for the last dice (the only one differing from `20`). - * @param rollOptions Config object containing options that change the way dice results are handled. - * - * @returns {number} The total check value. - */ -export function calculateRollResult( - assignedRollResults: Array, - remainderTargetValue: number, - rollOptions: RollOptions, -): number { - const numberOfDice = assignedRollResults.length; - - const maxResultPerDie: Array = Array(numberOfDice).fill(20); - maxResultPerDie[numberOfDice - 1] = remainderTargetValue; - - const rollsAndMaxValues = zip(assignedRollResults, maxResultPerDie); - - return rollsAndMaxValues - .map(([v, m]) => { - return v <= rollOptions.maxCritSuccess ? [m, m] : [v, m]; - }) - .filter(([v, m]) => v <= m) - .map(([v]) => v) - .reduce((a, b) => a + b); -} - -// TODO: Move to generic utils method? -/** - * Zips two Arrays to an array of pairs of elements with corresponding indices. Excessive elements are dropped. - * @param {Array} a1 First array to zip. - * @param {Array} a2 Second array to zip. - * - * @typeParam T - Type of elements contained in `a1`. - * @typeParam U - Type of elements contained in `a2`. - * - * @returns {Array<[T,U]>} The array of pairs that had the same index in their source array. - */ -function zip(a1: Array, a2: Array): Array<[T, U]> { - if (a1.length <= a2.length) { - return a1.map((e1, i) => [e1, a2[i]]); - } else { - return a2.map((e2, i) => [a1[i], e2]); - } -} diff --git a/src/scss/components/_apps.scss b/src/scss/components/_apps.scss deleted file mode 100644 index f305ef33..00000000 --- a/src/scss/components/_apps.scss +++ /dev/null @@ -1,21 +0,0 @@ -.window-content { - overflow-y: hidden; - padding: 5px; - - form { - height: 100%; - overflow: hidden; - } - - .sheet-body { - overflow-y: auto; - } - .tab { - height: 100%; - overflow-y: visible; - align-content: flex-start; - ol { - overflow-y: visible; - } - } -} diff --git a/src/scss/components/_attributes_traits.scss b/src/scss/components/_attributes_traits.scss deleted file mode 100644 index 09cb469b..00000000 --- a/src/scss/components/_attributes_traits.scss +++ /dev/null @@ -1,46 +0,0 @@ -.attributes-traits { - margin-top: $margin-sm; - .attribute { - .attribute-label { - font-family: $font-heading; - font-size: 2em; - text-align: center; - } - .attribute-value { - border: 2px groove $c-border-groove; - font-size: 1.5em; - text-align: center; - padding-left: 2px; - padding-right: 2px; - gap: 0; - input, - .attribute-value-total { - grid-column: span 2; - line-height: $default-input-height; - } - } - } - .trait { - .trait-label { - color: transparent; - font-family: $font-heading; - font-size: 2em; - text-align: center; - //text-shadow: -1px 1px 0 $c-black, 1px 1px 0 $c-black, 1px -1px 0 $c-black, -1px -1px 0 $c-black; - -webkit-text-stroke: 1px $c-black; - } - .trait-value { - border: 2px groove $c-border-groove; - font-size: 1.5em; - text-align: center; - padding-left: 2px; - padding-right: 2px; - gap: 0; - input, - .trait-value-total { - grid-column: span 2; - line-height: $default-input-height; - } - } - } -} diff --git a/src/scss/components/_basic_property.scss b/src/scss/components/_basic_property.scss deleted file mode 100644 index 56668373..00000000 --- a/src/scss/components/_basic_property.scss +++ /dev/null @@ -1,26 +0,0 @@ -.basic-properties { - flex: 0 0 100%; - grid-gap: 2px; - grid-template-columns: repeat(auto-fill, minmax(9em, 1fr)); - .basic-property { - display: grid; - align-content: end; - padding-left: 1px; - padding-right: 1px; - - & > label { - font-weight: bold; - } - - & > select { - display: block; - width: 100%; - } - - .input-divider { - text-align: center; - } - - @include mark-invalid-or-disabled-input; - } -} diff --git a/src/scss/components/_character_progression.scss b/src/scss/components/_character_progression.scss deleted file mode 100644 index b13927d9..00000000 --- a/src/scss/components/_character_progression.scss +++ /dev/null @@ -1,28 +0,0 @@ -.progression { - .progression-entry { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: flex-end; - align-items: center; - - padding-right: 3px; - h2.progression-label { - font-family: $font-heading; - display: block; - height: 50px; - padding: 0; - color: $c-light-grey; - border: none; - line-height: 50px; - margin: $header-top-margin 0; - text-align: right; - //flex: 0; - } - input.progression-value { - margin-left: 5px; - flex: 0 0 40px; - text-align: left; - } - } -} diff --git a/src/scss/components/_character_values.scss b/src/scss/components/_character_values.scss deleted file mode 100644 index 69ccc0ff..00000000 --- a/src/scss/components/_character_values.scss +++ /dev/null @@ -1,5 +0,0 @@ -header.sheet-header { - .character-values { - flex: 0 0 100%; - } -} diff --git a/src/scss/components/_combat_values.scss b/src/scss/components/_combat_values.scss deleted file mode 100644 index 5b7ad3d2..00000000 --- a/src/scss/components/_combat_values.scss +++ /dev/null @@ -1,48 +0,0 @@ -.combat-values { - margin-top: $margin-sm; - .combat-value-with-formula { - display: grid; - place-items: center; - $size: 60px; - row-gap: $margin-sm; - .combat-value { - @include centered-content; - height: $size; - width: $size; - flex: 0 0 auto; - background-size: contain; - font-size: 1.5em; - &.hitPoints { - background-image: url("#{$official-assets-path}/DS4-HP.png"); - } - &.defense { - background-image: url("#{$official-assets-path}/DS4-DEF.png"); - } - &.initiative { - background-image: url("#{$official-assets-path}/DS4-INI.png"); - } - &.movement { - background-image: url("#{$official-assets-path}/DS4-MR.png"); - } - &.meleeAttack { - background-image: url("#{$official-assets-path}/DS4-MAT.png"); - } - &.rangedAttack { - background-image: url("#{$official-assets-path}/DS4-RAT.png"); - } - &.spellcasting { - background-image: url("#{$official-assets-path}/DS4-SPC.png"); - } - &.targetedSpellcasting { - background-image: url("#{$official-assets-path}/DS4-TSC.png"); - } - } - - .combat-value-formula { - width: $size; - input { - text-align: center; - } - } - } -} diff --git a/src/scss/components/_description.scss b/src/scss/components/_description.scss deleted file mode 100644 index b1291504..00000000 --- a/src/scss/components/_description.scss +++ /dev/null @@ -1,67 +0,0 @@ -.side-properties { - flex: 0; - min-width: fit-content; - max-width: 50%; - margin: 5px 5px 5px 0; - padding-right: 5px; - border-right: 2px groove $c-border-groove; - - .side-property { - margin: 2px 0; - display: grid; - grid-template-columns: minmax(40%, max-content) 1fr; - justify-content: left; - - label { - line-height: $default-input-height; - font-weight: bold; - padding-right: 3pt; - } - - input, - select, - a { - text-align: left; - width: calc(100% - 2px); - overflow: hidden; - text-overflow: ellipsis; - } - - @include mark-invalid-or-disabled-input; - - input[type="checkbox"] { - width: auto; - height: 100%; - margin: 0px; - } - - .unit-data-pair { - display: flex; - flex-direction: row; - select { - width: 4em; - } - input { - max-width: 7em; - } - } - } -} - -.description { - height: 100%; -} - -.sheet-body .tab .editor { - height: 100%; -} - -.tox { - .tox-editor-container { - background: $c-white; - } - - .tox-edit-area { - padding: 0 8px; - } -} diff --git a/src/scss/components/_forms.scss b/src/scss/components/_forms.scss deleted file mode 100644 index 4c99b156..00000000 --- a/src/scss/components/_forms.scss +++ /dev/null @@ -1,62 +0,0 @@ -.item-form { - font-family: $font-primary; -} - -$header-top-margin: 5px; - -header.sheet-header { - flex: 0 0 auto; - overflow: hidden; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: flex-start; - align-items: flex-start; - - .profile-img { - flex: 0 0 100px; - height: 100px; - margin: $header-top-margin 10px $header-top-margin 0; - } - - .header-fields { - flex: 1; - } - - h1.charname { - height: 50px; - padding: 0px; - margin: $header-top-margin 10px $header-top-margin 0; - border-bottom: 0; - input { - width: 100%; - height: 100%; - margin: 0; - border: none; - background-color: transparent; - } - font-family: $font-heading; - display: block; - } - h2.item-type { - font-family: $font-heading; - display: block; - height: 50px; - padding: 0px; - flex: 0 0 auto; - color: $c-light-grey; - border: none; - line-height: 50px; - margin: $header-top-margin 0; - text-align: right; - } -} - -.sheet-tabs { - flex: 0; -} - -.sheet-body, -.sheet-body .tab { - height: 100%; -} diff --git a/src/scss/components/_items.scss b/src/scss/components/_items.scss deleted file mode 100644 index 6382c587..00000000 --- a/src/scss/components/_items.scss +++ /dev/null @@ -1,84 +0,0 @@ -@use "sass:color"; - -.items-list { - list-style: none; - margin: 7px 0; - padding: 0; - overflow-y: auto; - - .item-header { - font-weight: bold; - } - - .item { - height: 30px; - line-height: 24px; - padding: 3px 0; - border-bottom: 1px solid #bbb; - - .item-image { - flex: 0 0 24px; - height: 100%; - //margin-right: 5px; - @include centered-content; - } - - img { - display: block; - border: none; - } - - input { - border: 0; - padding: 0; - background-color: transparent; - } - - input[type="checkbox"] { - width: auto; - height: 100%; - margin: 0px; - } - - @include mark-invalid-or-disabled-input; - } - - .item-name { - margin: 0; - } - - .item-controls { - flex: 0 0 86px; - text-align: right; - } - - .item-num-val { - text-align: center; - width: 2.5em; - padding: 0; - } - - .item-description { - font-size: 75%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - height: 100%; - p { - text-overflow: ellipsis; - overflow: hidden; - } - p:first-child { - margin-top: 0px; - padding-top: 0px; - } - } -} - -.items-list-title { - margin-top: 2em; - margin-bottom: 0px; - padding-left: 1em; - border-bottom: 2px groove $c-border-groove; - font-weight: bold; -} diff --git a/src/scss/components/_tabs.scss b/src/scss/components/_tabs.scss deleted file mode 100644 index fbeb2350..00000000 --- a/src/scss/components/_tabs.scss +++ /dev/null @@ -1,14 +0,0 @@ -nav.tabs { - height: 40px; - border-top: 2px groove $c-border-groove; - border-bottom: 2px groove $c-border-groove; - - .item { - line-height: 40px; - font-weight: bold; - } - - .item.active { - text-decoration: none; - } -} diff --git a/src/scss/components/_talents.scss b/src/scss/components/_talents.scss deleted file mode 100644 index 2f8db41b..00000000 --- a/src/scss/components/_talents.scss +++ /dev/null @@ -1,3 +0,0 @@ -.talent-ranks-equation { - text-align: center; -} diff --git a/src/scss/global/_accessibility.scss b/src/scss/global/_accessibility.scss deleted file mode 100644 index dd0e4211..00000000 --- a/src/scss/global/_accessibility.scss +++ /dev/null @@ -1,3 +0,0 @@ -.hidden { - display: none; -} diff --git a/src/scss/global/_flex.scss b/src/scss/global/_flex.scss deleted file mode 100644 index 3f23d105..00000000 --- a/src/scss/global/_flex.scss +++ /dev/null @@ -1,86 +0,0 @@ -/* ----------------------------------------- */ -/* Flexbox */ -/* ----------------------------------------- */ - -.flexrow { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: flex-start; - - > * { - flex: 1; - } - - .flex05 { - flex: 0.5; - } - .flex1 { - flex: 1; - } - .flex125 { - flex: 1.25; - } - .flex15 { - flex: 1.5; - } - .flex2 { - flex: 2; - } - .flex3 { - flex: 3; - } - .flex4 { - flex: 4; - } -} - -.flexnowrap { - flex-wrap: nowrap; -} - -.flexcol { - display: flex; - flex-direction: column; - flex-wrap: nowrap; - - > * { - flex: 1; - } - - .flex05 { - flex: 0.5; - } - .flex1 { - flex: 1; - } - .flex125 { - flex: 1.25; - } - .flex15 { - flex: 1.5; - } - .flex2 { - flex: 2; - } - .flex3 { - flex: 3; - } - .flex4 { - flex: 4; - } -} - -.flex-center { - align-items: center; - justify-content: center; - text-align: center; -} - -.flex-between { - justify-content: space-between; -} - -.flex-around { - justify-content: space-around; -} diff --git a/src/scss/global/_grid.scss b/src/scss/global/_grid.scss deleted file mode 100644 index b8903f70..00000000 --- a/src/scss/global/_grid.scss +++ /dev/null @@ -1,83 +0,0 @@ -.grid, -.grid-2col { - display: grid; - grid-column: span 2 / span 2; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 10px; - padding: 0; -} - -.grid-1col { - grid-column: span 1 / span 1; - grid-template-columns: repeat(1, minmax(0, 1fr)); -} - -.grid-3col { - grid-column: span 3 / span 3; - grid-template-columns: repeat(3, minmax(0, 1fr)); -} - -.grid-4col { - grid-column: span 4 / span 4; - grid-template-columns: repeat(4, minmax(0, 1fr)); -} - -.grid-5col { - grid-column: span 5 / span 5; - grid-template-columns: repeat(5, minmax(0, 1fr)); -} - -.grid-6col { - grid-column: span 6 / span 6; - grid-template-columns: repeat(6, minmax(0, 1fr)); -} - -.grid-7col { - grid-column: span 7 / span 7; - grid-template-columns: repeat(7, minmax(0, 1fr)); -} - -.grid-8col { - grid-column: span 8 / span 8; - grid-template-columns: repeat(8, minmax(0, 1fr)); -} - -.grid-9col { - grid-column: span 9 / span 9; - grid-template-columns: repeat(9, minmax(0, 1fr)); -} - -.grid-10col { - grid-column: span 10 / span 10; - grid-template-columns: repeat(10, minmax(0, 1fr)); -} - -.grid-11col { - grid-column: span 11 / span 11; - grid-template-columns: repeat(11, minmax(0, 1fr)); -} - -.grid-12col { - grid-column: span 12 / span 12; - grid-template-columns: repeat(12, minmax(0, 1fr)); -} - -.flex-group-center, -.flex-group-left, -.flex-group-right { - justify-content: center; - align-items: center; - text-align: center; - padding: 5px; - border: 1px solid #999; -} - -.flex-group-left { - justify-content: flex-start; - text-align: left; -} - -.flex-group-right { - justify-content: flex-end; - text-align: right; -} diff --git a/src/scss/global/_window.scss b/src/scss/global/_window.scss deleted file mode 100644 index 36985d71..00000000 --- a/src/scss/global/_window.scss +++ /dev/null @@ -1,19 +0,0 @@ -.window-app { - font-family: $font-primary; - input[type="text"], - input[type="number"], - input[type="password"], - input[type="date"], - input[type="time"] { - width: 100%; - } -} - -.rollable { - &:hover, - &:focus { - color: #000; - text-shadow: 0 0 10px red; - cursor: pointer; - } -} diff --git a/src/scss/utils/_colors.scss b/src/scss/utils/_colors.scss deleted file mode 100644 index 55fb8c0a..00000000 --- a/src/scss/utils/_colors.scss +++ /dev/null @@ -1,5 +0,0 @@ -$c-white: #fff; -$c-black: #000; -$c-light-grey: #777; -$c-border-groove: #eeede0; -$c-invalid-input: rgba(lightcoral, 50%); diff --git a/src/scss/utils/_mixins.scss b/src/scss/utils/_mixins.scss deleted file mode 100644 index adc2e69a..00000000 --- a/src/scss/utils/_mixins.scss +++ /dev/null @@ -1,30 +0,0 @@ -@mixin element-invisible { - position: absolute; - - width: 1px; - height: 1px; - margin: -1px; - border: 0; - padding: 0; - - clip: rect(0 0 0 0); - overflow: hidden; -} - -@mixin hide { - display: none; -} - -@mixin centered-content { - display: grid; - place-items: center; -} - -@mixin mark-invalid-or-disabled-input { - input:invalid { - background-color: $c-invalid-input; - } - input:disabled { - background-color: transparent; - } -} diff --git a/src/scss/utils/_typography.scss b/src/scss/utils/_typography.scss deleted file mode 100644 index a5838b07..00000000 --- a/src/scss/utils/_typography.scss +++ /dev/null @@ -1,12 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Lora:wght@400;700&display=swap"); - -@font-face { - font-family: "Wood Stamp"; - font-style: normal; - font-weight: normal; - src: local("Wood Stamp"), url("fonts/Woodstamp.woff") format("woff"); -} - -$font-primary: "Lora", sans-serif; -$font-secondary: "Lora", sans-serif; -$font-heading: "Wood Stamp", sans-serif; diff --git a/src/scss/utils/_variables.scss b/src/scss/utils/_variables.scss deleted file mode 100644 index a10ef211..00000000 --- a/src/scss/utils/_variables.scss +++ /dev/null @@ -1,10 +0,0 @@ -$padding-sm: 5px; -$padding-md: 10px; -$padding-lg: 20px; -$margin-sm: $padding-sm; -$margin-md: $padding-md; -$margin-lg: $padding-lg; - -$default-input-height: 26px; - -$official-assets-path: "assets/official"; diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..328a8512 --- /dev/null +++ b/src/settings.js @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { getGame } from "./utils/utils"; + +export function registerSystemSettings() { + const game = getGame(); + + /** + * Track the migration version of the latest migration that has been applied. + */ + game.settings.register("ds4", "systemMigrationVersion", { + name: "System Migration Version", + scope: "world", + config: false, + type: Number, + default: -1, + }); + + game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { + name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", + hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", + scope: "world", + config: true, + type: Boolean, + default: false, + }); + + game.settings.register("ds4", "showSlayerPoints", { + name: "DS4.SettingShowSlayerPointsName", + hint: "DS4.SettingShowSlayerPointsHint", + scope: "world", + config: true, + type: Boolean, + default: false, + }); +} + +/** + * @typedef DS4Settings + * @property {number} systemMigrationVersion + * @property {boolean} useSlayingDiceForAutomatedChecks + * @property {boolean} showSlayerPoints + */ + +/** + * Get the current values for DS4 settings. + * @returns {DS4Settings} + */ +export function getDS4Settings() { + const game = getGame(); + return { + systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"), + useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"), + }; +} diff --git a/src/system.json b/src/system.json deleted file mode 100644 index 6c742c7a..00000000 --- a/src/system.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "ds4", - "title": "Dungeonslayers 4", - "description": "The Dungeonslayers 4 system for FoundryVTT. Dungeonslayers (© Christian Kennig) is licensed under CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en).", - "version": "0.1.0", - "minimumCoreVersion": "0.7.9", - "compatibleCoreVersion": "0.7.9", - "templateVersion": 2, - "author": "Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug", - "esmodules": ["module/ds4.js"], - "styles": ["ds4.css"], - "scripts": [], - "packs": [], - "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "de", - "name": "Deutsch", - "path": "lang/de.json" - } - ], - "gridDistance": 1, - "gridUnits": "m", - "primaryTokenAttribute": "combatValues.hitPoints", - "url": "https://git.f3l.de/dungeonslayers/ds4", - "manifest": "https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false", - "download": "https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/0.1.0/download?job=build", - "license": "MIT", - "initiative": "@combatValues.initiative.total" -} diff --git a/src/template.json b/src/template.json deleted file mode 100644 index 726d0a56..00000000 --- a/src/template.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "Actor": { - "types": ["character", "creature"], - "templates": { - "base": { - "attributes": { - "body": { - "base": 0, - "mod": 0 - }, - "mobility": { - "base": 0, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "base": 0, - "mod": 0, - "value": 0 - }, - "defense": { - "base": 0, - "mod": 0 - }, - "initiative": { - "base": 0, - "mod": 0 - }, - "movement": { - "base": 0, - "mod": 0 - }, - "meleeAttack": { - "base": 0, - "mod": 0 - }, - "rangedAttack": { - "base": 0, - "mod": 0 - }, - "spellcasting": { - "base": 0, - "mod": 0 - }, - "targetedSpellcasting": { - "base": 0, - "mod": 0 - } - } - } - }, - "creature": { - "templates": ["base"], - "baseInfo": { - "loot": "", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 0, - "description": "" - } - }, - "character": { - "templates": ["base"], - "baseInfo": { - "race": "", - "class": "", - "heroClass": "", - "culture": "" - }, - "progression": { - "level": 0, - "experiencePoints": 0, - "talentPoints": { - "total": 0, - "used": 0 - }, - "progressPoints": { - "total": 0, - "used": 0 - } - }, - "profile": { - "biography": "", - "gender": "", - "birthday": "", - "birthplace": "", - "age": 0, - "height": 0, - "hairColor": "", - "weight": 0, - "eyeColor": "", - "specialCharacteristics": "" - }, - "currency": { - "gold": 0, - "silver": 0, - "copper": 0 - } - } - }, - "Item": { - "types": [ - "weapon", - "armor", - "shield", - "spell", - "trinket", - "equipment", - "talent", - "racialAbility", - "language", - "alphabet", - "specialCreatureAbility" - ], - "templates": { - "base": { - "description": "" - }, - "physical": { - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-" - }, - "equipable": { - "equipped": false - }, - "protective": { - "armorValue": 0 - } - }, - "weapon": { - "templates": ["base", "physical", "equipable"], - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "armor": { - "templates": ["base", "physical", "equipable", "protective"], - "armorMaterialType": "cloth", - "armorType": "body" - }, - "shield": { - "templates": ["base", "physical", "equipable", "protective"] - }, - "trinket": { - "templates": ["base", "physical", "equipable"] - }, - "equipment": { - "templates": ["base", "physical"] - }, - "talent": { - "templates": ["base"], - "rank": { - "base": 0, - "max": 0, - "mod": 0 - } - }, - "racialAbility": { - "templates": ["base"] - }, - "language": { - "templates": ["base"] - }, - "alphabet": { - "templates": ["base"] - }, - "spell": { - "templates": ["base", "equipable"], - "spellType": "spellcasting", - "bonus": "", - "spellCategory": "unset", - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": { - "value": "", - "unit": "custom" - }, - "scrollPrice": 0 - }, - "specialCreatureAbility": { - "templates": ["base"], - "experiencePoints": 0 - } - } -} diff --git a/src/templates/actor/character-sheet.hbs b/src/templates/actor/character-sheet.hbs deleted file mode 100644 index 0fb538f9..00000000 --- a/src/templates/actor/character-sheet.hbs +++ /dev/null @@ -1,107 +0,0 @@ -
- {{!-- Sheet Header --}} -
- Actor Icon -
-

- - -

- {{> systems/ds4/templates/actor/partials/character-progression.hbs}} - -
-
- - -
-
- - -
-
- -
- - / - - -
-
-
- -
- - / - - -
-
-
- - -
-
- - -
-
-
-
- {{> systems/ds4/templates/actor/partials/attributes-traits.hbs}} - {{> systems/ds4/templates/actor/partials/combat-values.hbs}} -
-
- - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
- {{!-- Items Tab --}} - {{> systems/ds4/templates/actor/partials/character-inventory.hbs}} - - {{!-- Spells Tab --}} - {{> systems/ds4/templates/actor/partials/spells-overview.hbs}} - - {{!-- Talents Tab --}} - {{> systems/ds4/templates/actor/partials/talents-abilities-overview.hbs}} - - {{! Profile Tab --}} - {{> systems/ds4/templates/actor/partials/profile.hbs}} - - {{!-- Biography Tab --}} -
- {{editor content=data.profile.biography target="data.profile.biography" button=true owner=owner - editable=editable}} -
-
-
diff --git a/src/templates/actor/creature-sheet.hbs b/src/templates/actor/creature-sheet.hbs deleted file mode 100644 index 7571eaba..00000000 --- a/src/templates/actor/creature-sheet.hbs +++ /dev/null @@ -1,78 +0,0 @@ -
- {{!-- Sheet Header --}} -
- -
-

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
-
- {{> systems/ds4/templates/actor/partials/attributes-traits.hbs}} - {{> systems/ds4/templates/actor/partials/combat-values.hbs}} -
-
- - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
- {{!-- Items Tab --}} - {{> systems/ds4/templates/actor/partials/creature-inventory.hbs}} - - {{!-- Special Creature Abilities Tab --}} - {{> systems/ds4/templates/actor/partials/special-creature-abilites-overview.hbs}} - - {{!-- Spells Tab --}} - {{> systems/ds4/templates/actor/partials/spells-overview.hbs}} - - {{!-- Description Tab --}} -
- {{editor content=data.baseInfo.description target="data.baseInfo.description" button=true owner=owner - editable=editable}} -
-
-
\ No newline at end of file diff --git a/src/templates/actor/partials/attributes-traits.hbs b/src/templates/actor/partials/attributes-traits.hbs deleted file mode 100644 index 14fece65..00000000 --- a/src/templates/actor/partials/attributes-traits.hbs +++ /dev/null @@ -1,52 +0,0 @@ -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - -{{!-- -!-- Render an attribute. -!-- -!-- @param attribute-label: The label to display for the attribute -!-- @param attribute-key: The key of the attribute -!-- @param attribute-data: The data for the attribute ---}} - -{{#*inline "attribute"}} -
-
+ - = - {{attribute-data.total}}
-
-{{/inline}} - -{{!-- -!-- Render a trait. -!-- -!-- @param trait-label: The label to display for the trait -!-- @param trait-key: The key of the trait -!-- @param trait-data: The data for the trait ---}} - -{{#*inline "trait"}} -
-
+ - = - {{trait-data.total}}
-
-{{/inline}} - -{{!-- ======================================================================== --}} - -
- {{#each config.attributes as |attribute-label attribute-key|}} - {{> attribute attribute-label=attribute-label attribute-key=attribute-key attribute-data=(lookup ../data.attributes - attribute-key)}} - {{/each}} - {{#each config.traits as |trait-label trait-key|}} - {{> trait trait-label=trait-label trait-key=trait-key trait-data=(lookup ../data.traits trait-key)}} - {{/each}} -
diff --git a/src/templates/actor/partials/character-inventory.hbs b/src/templates/actor/partials/character-inventory.hbs deleted file mode 100644 index 19a4009d..00000000 --- a/src/templates/actor/partials/character-inventory.hbs +++ /dev/null @@ -1,21 +0,0 @@ -
- - {{!-- Money--}} -

{{localize 'DS4.CharacterCurrency'}}

-
    -
  1. - - - - - - -
  2. -
- - {{> systems/ds4/templates/actor/partials/items-overview.hbs}} - -
\ No newline at end of file diff --git a/src/templates/actor/partials/character-progression.hbs b/src/templates/actor/partials/character-progression.hbs deleted file mode 100644 index fd0a3932..00000000 --- a/src/templates/actor/partials/character-progression.hbs +++ /dev/null @@ -1,17 +0,0 @@ -
-
-

-

- - -
-
-

-

- - -
-
diff --git a/src/templates/actor/partials/combat-values.hbs b/src/templates/actor/partials/combat-values.hbs deleted file mode 100644 index 49bfd024..00000000 --- a/src/templates/actor/partials/combat-values.hbs +++ /dev/null @@ -1,30 +0,0 @@ -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - -{{!-- -!-- Render a combat value. -!-- -!-- @param combat-value-key: The key of the combat value -!-- @param combat-value-data: The data for the attribute ---}} - -{{#*inline "combat-value"}} -
-
{{combat-value-data.total}} -
-
-
-
-{{/inline}} - -{{!-- ======================================================================== --}} - -
- {{#each config.combatValues as |combat-value-label combat-value-key|}} - {{> combat-value combat-value-key=combat-value-key combat-value-data=(lookup ../data.combatValues - combat-value-key)}} - {{/each}} -
diff --git a/src/templates/actor/partials/creature-inventory.hbs b/src/templates/actor/partials/creature-inventory.hbs deleted file mode 100644 index b9b8acd6..00000000 --- a/src/templates/actor/partials/creature-inventory.hbs +++ /dev/null @@ -1,5 +0,0 @@ -
- - {{> systems/ds4/templates/actor/partials/items-overview.hbs}} - -
\ No newline at end of file diff --git a/src/templates/actor/partials/items-overview.hbs b/src/templates/actor/partials/items-overview.hbs deleted file mode 100644 index 55b34411..00000000 --- a/src/templates/actor/partials/items-overview.hbs +++ /dev/null @@ -1,198 +0,0 @@ -{{!-- TODO: Refactor to avoid code duplication with special-creature-abilites-overview and talents-overview --}} - -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - - -{{!-- -!-- Render the given partial block only if the given itemsArray has length > 0, -!-- else only an add button. -!-- -!-- @param itemsArray: the array with the items to check the length of -!-- @param dataType: the string type of the item ---}} -{{#*inline "ifHasItemOfType"}} -{{#if (and (ne itemsArray undefined) (gt itemsArray.length 0))}} -{{> @partial-block}} -{{else}} -{{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} -{{/if}} -{{/inline}} - - -{{!-- -!-- Render a header row for a given data type. -!-- It is a flexbox with a child for each column head. -!-- An "equipped" heading is rendered except for the case dataType==='equipment'. -!-- The partial assumes a variable dataType to be given in the context. -!-- If the partial is called with a partial block, the partial block -!-- content is inserted before the description heading. - -!-- @param datType: hand over the dataType to the partial as hash parameter -!-- @param partial-block: hand over custom children of the flexbox in the partial block. ---}} -{{#*inline "itemListHeader" }} -
  • - {{!-- equipped --}} - {{#if (ne dataType 'equipment')}} -
    {{localize 'DS4.ItemEquippedAbbr'}}
    - {{/if}} - {{!-- image --}} -
    - {{!-- amount --}} -
    #
    - {{!-- name --}} -
    {{localize 'DS4.ItemName'}}
    - {{!-- item type specifics --}} - {{> @partial-block }} - {{!-- description --}} -
    {{localize 'DS4.Description'}}
    - {{!-- add button --}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} -
  • -{{/inline}} - -{{!-- -!-- Render a list row from a given item. -!-- It is a flexbox with a child for each item value of interest. -!-- An equipped checkbox is rendered if item.data.data.equipped is defined. -!-- The partial assumes a variable item to be given in the context. -!-- If the partial is called with a partial block, the partial block -!-- content is inserted before the description. - -!-- @param item: hand over the item to the partial as hash parameter -!-- @param partial-block: hand over custom children of the flexbox in the partial block. ---}} -{{#*inline "itemListEntry"}} -
  • - {{!-- equipped --}} - {{#if (ne item.data.data.equipped undefined)}} - - {{/if}} - {{!-- image --}} -
    - -
    - {{!-- amount --}} - - {{!-- name --}} - - {{!-- item type specifics --}} - {{> @partial-block}} - {{!-- description --}} -
    {{{item.data.data.description}}}
    - {{!-- control buttons --}} - {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} -
  • -{{/inline}} - - -{{!-- ======================================================================== --}} - -{{!-- WEAPONS --}} -

    {{localize 'DS4.ItemTypeWeaponPlural'}}

    -{{!-- {{#if (and (ne itemsByType.weapon undefined) (gt itemsByType.weapon.length 0)) }} --}} -{{#> ifHasItemOfType itemsArray=itemsByType.weapon dataType='weapon' }} -
      - {{#> itemListHeader dataType='weapon'}} -
      {{localize 'DS4.AttackTypeAbbr'}}
      -
      - {{localize 'DS4.WeaponBonusAbbr'}} -
      -
      - {{localize 'DS4.OpponentDefenseAbbr'}} -
      - {{/itemListHeader}} - {{#each itemsByType.weapon as |item id|}} - {{#> itemListEntry item=item}} -
      - -
      -
      {{ item.data.data.weaponBonus}}
      -
      {{ item.data.data.opponentDefense}}
      - {{/itemListEntry}} - {{/each}} -
    -{{!-- {{else}} -{{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType='weapon' }} --}} -{{/ifHasItemOfType}} - -{{!-- ARMOR --}} -

    {{localize 'DS4.ItemTypeArmorPlural'}}

    -{{#> ifHasItemOfType itemsArray=itemsByType.armor dataType='armor' }} -
      - {{#> itemListHeader dataType='armor'}} -
      {{localize 'DS4.ArmorMaterialTypeAbbr'}}
      -
      {{localize 'DS4.ArmorTypeAbbr'}}
      -
      - {{localize 'DS4.ArmorValueAbbr'}} -
      - {{/itemListHeader}} - {{#each itemsByType.armor as |item id|}} - {{#> itemListEntry item=item }} -
      - {{lookup ../../config.armorMaterialTypesAbbr item.data.data.armorMaterialType}} -
      -
      - {{lookup ../../config.armorTypesAbbr item.data.data.armorType}} -
      -
      {{ item.data.data.armorValue}}
      - {{/itemListEntry}} - {{/each}} -
    -{{/ifHasItemOfType}} - - -{{!-- SHIELD --}} -

    {{localize 'DS4.ItemTypeShieldPlural'}}

    {{!-- SPECIFIC --}} -{{#> ifHasItemOfType itemsArray=itemsByType.shield dataType='shield' }} -
      - {{#> itemListHeader dataType='shield' }} -
      - {{localize 'DS4.ArmorValueAbbr'}} -
      - {{/itemListHeader}} - {{#each itemsByType.shield as |item id|}} - {{#> itemListEntry item=item }} -
      {{item.data.data.armorValue}}
      {{!-- SPECIFIC --}} - {{/itemListEntry}} - {{/each}} -
    -{{/ifHasItemOfType}} - -{{!-- TRINKET --}} -

    {{localize 'DS4.ItemTypeTrinketPlural'}}

    -{{#> ifHasItemOfType itemsArray=itemsByType.trinket dataType='trinket' }} -
      - {{#> itemListHeader dataType='trinket'}} -
      {{localize 'DS4.StorageLocation'}}
      - {{/itemListHeader}} - {{#each itemsByType.trinket as |item id|}} - {{#> itemListEntry item=item }} - - {{/itemListEntry}} - {{/each}} -
    -{{/ifHasItemOfType}} - -{{!-- EQUIPMENT --}} -

    {{localize 'DS4.ItemTypeEquipmentPlural'}}

    -{{#> ifHasItemOfType itemsArray=itemsByType.equipment dataType='equipment' }} -
      - {{#> itemListHeader dataType='equipment'}} -
      {{localize 'DS4.StorageLocation'}}
      - {{/itemListHeader}} - {{#each itemsByType.equipment as |item id|}} - {{#> itemListEntry item=item }} - - {{/itemListEntry}} - {{/each}} -
    -{{/ifHasItemOfType}} \ No newline at end of file diff --git a/src/templates/actor/partials/overview-add-button.hbs b/src/templates/actor/partials/overview-add-button.hbs deleted file mode 100644 index 86e5d774..00000000 --- a/src/templates/actor/partials/overview-add-button.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{! -!-- Render an "add" button for adding an item of given data type. -!-- -!-- @param datType: hand over the dataType to the partial as hash parameter -}} - \ No newline at end of file diff --git a/src/templates/actor/partials/overview-control-buttons.hbs b/src/templates/actor/partials/overview-control-buttons.hbs deleted file mode 100644 index d10dbc3f..00000000 --- a/src/templates/actor/partials/overview-control-buttons.hbs +++ /dev/null @@ -1,8 +0,0 @@ -{{!-- -!-- Render a group of an "edit" and a "delete" button for the current item. -!-- The current item is defined by the data-item-id HTML property of the parent li element. ---}} -
    - - -
    diff --git a/src/templates/actor/partials/profile.hbs b/src/templates/actor/partials/profile.hbs deleted file mode 100644 index be95eeb5..00000000 --- a/src/templates/actor/partials/profile.hbs +++ /dev/null @@ -1,15 +0,0 @@ -
    -
    - {{#each data.profile as |profile-data-value profile-data-key|}} - {{#if (ne profile-data-key 'biography')}} -
    - - -
    - {{/if}} - {{/each}} -
    -
    diff --git a/src/templates/actor/partials/special-creature-abilites-overview.hbs b/src/templates/actor/partials/special-creature-abilites-overview.hbs deleted file mode 100644 index 28637149..00000000 --- a/src/templates/actor/partials/special-creature-abilites-overview.hbs +++ /dev/null @@ -1,61 +0,0 @@ -{{!-- TODO: Refactor to avoid code duplication with items-overview and talents-overview --}} - -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - -{{!-- -!-- Render a list row for a base item from a given item. -!-- Base item means it just has an image, a description, and a name (and effects). -!-- It is a flexbox with a child for each item value of interest. -!-- The partial assumes a variable item to be given in the context. -!-- -!-- @param item: hand over the item to the partial as hash parameter ---}} -{{#*inline "baseItemListEntry"}} -
  • - {{!-- image --}} -
    - -
    - {{!-- name --}} - - {{!-- description --}} -
    {{{item.data.data.description}}}
    - {{!-- control buttons --}} - {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} -
  • -{{/inline}} - -{{!-- -!-- Render a list header for a base item list entries from a given item. -!-- The partial assumes a variable dataType to be given in the context. -!-- -!-- @param dataType: the string item type for the list ---}} -{{#*inline "baseItemListHeader"}} -
  • - {{!-- image --}} -
    - {{!-- name --}} -
    {{localize 'DS4.ItemName'}}
    - {{!-- description --}} -
    {{localize 'DS4.Description'}}
    - {{!-- add button --}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} -
  • -{{/inline}} - - -{{!-- ======================================================================== --}} - - -
    -
      - {{> baseItemListHeader dataType='specialCreatureAbility' }} - {{#each itemsByType.specialCreatureAbility as |item id|}} - {{> baseItemListEntry item=item}} - {{/each}} -
    -
    \ No newline at end of file diff --git a/src/templates/actor/partials/spells-overview.hbs b/src/templates/actor/partials/spells-overview.hbs deleted file mode 100644 index 8bcd33e3..00000000 --- a/src/templates/actor/partials/spells-overview.hbs +++ /dev/null @@ -1,93 +0,0 @@ -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - -{{!-- -!-- Base template to display a value with unit. -!-- @param unitDatum: the object to display; must have a value and a unit attribute -!-- @param localizationString -!-- @param unitNames: mapping of allowed unitDatum.unit values to localized unit name -!-- @param unitAbbrs: mapping of allowed unitDatum.unit values to unit abbreviation ---}} -{{#*inline "unit"}} -
    - {{#if unitDatum.value }} - {{unitDatum.value}}{{lookup unitAbbrs unitDatum.unit}} - {{else}}-{{/if}} -
    -{{/inline}} -{{!-- -!-- Two templates based on the "unit" template for displaying values with unit. -!-- Both accept a `config` object holding the unitNames and unitAbbr instead of -!-- directly handing over the latter two. ---}} -{{#*inline "temporalUnit"}} -{{> unit unitNames=config.temporalUnits unitAbbrs=config.temporalUnitsAbbr unitDatum=unitDatum localizationString=localizationString}} -{{/inline}} - -{{#*inline "distanceUnit"}} -{{> unit unitNames=config.distanceUnits unitAbbrs=config.distanceUnitsAbbr unitDatum=unitDatum localizationString=localizationString}} -{{/inline}} - - -{{!-- ======================================================================== --}} - - -
    -
      -
    1. - {{!-- equipped --}} -
      {{localize 'DS4.ItemEquippedAbbr'}}
      - {{!-- image --}} -
      - {{!-- name --}} -
      {{localize 'DS4.ItemName'}}
      - {{!-- spell type --}} -
      {{localize 'DS4.SpellTypeAbbr'}}
      - {{!-- spell bonus --}} -
      {{localize 'DS4.SpellBonusAbbr'}}
      - {{!-- max. distance --}} -
      - {{!-- duration --}} -
      - {{!-- cooldown duration --}} -
      - {{!-- description --}} - {{!--
      {{localize 'DS4.Description'}}
      --}} - {{!-- add button --}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType='spell' }} -
    2. - {{#each itemsByType.spell as |item id|}} -
    3. - - {{!-- image --}} -
      - -
      - {{!-- name --}} - - {{!-- spell type --}} -
      - -
      - {{!-- spell bonus --}} - - {{!-- max. distance --}} - {{> distanceUnit localizationString='DS4.SpellMaxDistance' unitDatum=item.data.data.maxDistance config=../config}} - {{!-- duration --}} - {{> temporalUnit localizationString='DS4.SpellDuration' unitDatum=item.data.data.duration config=../config}} - {{!-- cooldown duration --}} - {{> temporalUnit localizationString='DS4.SpellCooldownDuration' unitDatum=item.data.data.cooldownDuration config=../config}} - {{!-- description --}} - {{!--
      {{{item.data.data.description}}}
      --}} - {{!-- control buttons --}} - {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} -
    4. - {{/each}} -
    -
    \ No newline at end of file diff --git a/src/templates/actor/partials/talents-abilities-overview.hbs b/src/templates/actor/partials/talents-abilities-overview.hbs deleted file mode 100644 index e40b2aa7..00000000 --- a/src/templates/actor/partials/talents-abilities-overview.hbs +++ /dev/null @@ -1,174 +0,0 @@ -{{!-- TODO: Refactor to avoid code duplication with creature-special-abilities-overview and talents-overview --}} - -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - - -{{!-- -!-- Render the given partial block only if the given itemsArray has length > 0, -!-- else only an add button. -!-- -!-- @param itemsArray: the array with the items to check the length of -!-- @param dataType: the string type of the item ---}} -{{#*inline "ifHasItemOfType"}} -{{#if (and (ne itemsArray undefined) (gt itemsArray.length 0))}} - {{> @partial-block}} -{{else}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} -{{/if}} -{{/inline}} - - -{{!-- -!-- Render an input element for a rank value property of an item. -!-- -!-- @param item: the item -!-- @param property: the key of the property in item.data.data (if 'base', the max value is set automatically) -!-- @param disabled: if given, is placed plainly into the input as HTML property; -!-- meant to be set to "disabled" to disable the input element ---}} -{{#*inline "talentRankValue"}} - -{{/inline}} - - -{{!-- -!-- Render a talent list row from a given item. -!-- It is a flexbox with a child for each item value of interest. -!-- The partial assumes a variable item to be given in the context. -!-- -!-- @param item: hand over the item to the partial as hash parameter ---}} -{{#*inline "talentListEntry"}} -
  • - {{!-- image --}} -
    - -
    - {{!-- name --}} - -
    - {{!-- acquired rank --}} - {{> talentRankValue item=item property='base' localizeString='DS4.TalentRankBase'}} - ( of - {{!-- maximum acquirable rank --}} - {{> talentRankValue item=item property='max' localizeString='DS4.TalentRankMax'}} - ) + - {{!-- additional ranks --}} - {{> talentRankValue item=item property='mod' localizeString='DS4.TalentRankMod'}} - = - {{!-- derived total rank --}} - {{> talentRankValue item=item property='total' localizeString='DS4.TalentRankTotal' disabled='disabled'}} -
    - {{!-- description --}} -
    {{{item.data.data.description}}}
    - {{!-- control buttons --}} - {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} -
  • -{{/inline}} - - -{{!-- -!-- Render a list row for a base item from a given item. -!-- Base item means it just has an image, a description, and a name (and effects). -!-- It is a flexbox with a child for each item value of interest. -!-- The partial assumes a variable item to be given in the context. -!-- -!-- @param item: hand over the item to the partial as hash parameter ---}} -{{#*inline "baseItemListEntry"}} -
  • - {{!-- image --}} -
    - -
    - {{!-- name --}} - - {{!-- description --}} -
    {{{item.data.data.description}}}
    - {{!-- control buttons --}} - {{> systems/ds4/templates/actor/partials/overview-control-buttons.hbs }} -
  • -{{/inline}} - -{{!-- -!-- Render a list header for a base item list entries from a given item. -!-- The partial assumes a variable dataType to be given in the context. -!-- -!-- @param dataType: the string item type for the list ---}} -{{#*inline "baseItemListHeader"}} -
  • - {{!-- image --}} -
    - {{!-- name --}} -
    {{localize 'DS4.ItemName'}}
    - {{!-- description --}} -
    {{localize 'DS4.Description'}}
    - {{!-- add button --}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType=dataType }} -
  • -{{/inline}} - - -{{!-- ======================================================================== --}} - - -
    -

    {{localize 'DS4.ItemTypeTalentPlural'}}

    - {{#> ifHasItemOfType itemsArray=itemsByType.talent dataType='talent' }} -
      -
    1. - {{!-- image --}} -
      - {{!-- name --}} -
      {{localize 'DS4.ItemName'}}
      - {{!-- rank info --}} -
      {{localize 'DS4.TalentRank'}}
      - {{!-- description --}} -
      {{localize 'DS4.Description'}}
      - {{!-- add button --}} - {{> systems/ds4/templates/actor/partials/overview-add-button.hbs dataType='talent' }} -
    2. - {{#each itemsByType.talent as |item id|}} - {{> talentListEntry item=item}} - {{/each}} -
    - {{/ifHasItemOfType}} - -

    {{localize 'DS4.ItemTypeRacialAbilityPlural'}}

    - {{#> ifHasItemOfType itemsArray=itemsByType.racialAbility dataType='racialAbility' }} -
      - {{> baseItemListHeader dataType='racialAbility' }} - {{#each itemsByType.racialAbility as |item id|}} - {{> baseItemListEntry item=item}} - {{/each}} -
    - {{/ifHasItemOfType}} - -

    {{localize 'DS4.ItemTypeLanguagePlural'}}

    - {{#> ifHasItemOfType itemsArray=itemsByType.language dataType='language' }} -
      - {{> baseItemListHeader dataType='language' }} - {{#each itemsByType.language as |item id|}} - {{> baseItemListEntry item=item}} - {{/each}} -
    - {{/ifHasItemOfType}} - -

    {{localize 'DS4.ItemTypeAlphabetPlural'}}

    - {{#> ifHasItemOfType itemsArray=itemsByType.alphabet dataType='alphabet' }} -
      - {{> baseItemListHeader dataType='alphabet' }} - {{#each itemsByType.alphabet as |item id|}} - {{> baseItemListEntry item=item}} - {{/each}} -
    - {{/ifHasItemOfType}} -
    \ No newline at end of file diff --git a/src/templates/item/alphabet-sheet.hbs b/src/templates/item/alphabet-sheet.hbs deleted file mode 100644 index 5aabb9aa..00000000 --- a/src/templates/item/alphabet-sheet.hbs +++ /dev/null @@ -1,8 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} - -
    \ No newline at end of file diff --git a/src/templates/item/armor-sheet.hbs b/src/templates/item/armor-sheet.hbs deleted file mode 100644 index 5fd59feb..00000000 --- a/src/templates/item/armor-sheet.hbs +++ /dev/null @@ -1,34 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} -
    \ No newline at end of file diff --git a/src/templates/item/equipment-sheet.hbs b/src/templates/item/equipment-sheet.hbs deleted file mode 100644 index bbd66400..00000000 --- a/src/templates/item/equipment-sheet.hbs +++ /dev/null @@ -1,7 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} -
    \ No newline at end of file diff --git a/src/templates/item/language-sheet.hbs b/src/templates/item/language-sheet.hbs deleted file mode 100644 index 5aabb9aa..00000000 --- a/src/templates/item/language-sheet.hbs +++ /dev/null @@ -1,8 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} - -
    \ No newline at end of file diff --git a/src/templates/item/partials/body.hbs b/src/templates/item/partials/body.hbs deleted file mode 100644 index 2a9eaecd..00000000 --- a/src/templates/item/partials/body.hbs +++ /dev/null @@ -1,28 +0,0 @@ -{{!-- Template for the common body (navigation & body sections) of all items. --}} - -{{!-- Sheet Tab Navigation --}} - - -{{!-- Sheet Body --}} -
    - - {{!-- Description Tab --}} - {{#> systems/ds4/templates/item/partials/description.hbs}} - {{> @partial-block}} - {{/systems/ds4/templates/item/partials/description.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/item/partials/effects.hbs}} - - {{#if isPhysical}} - {{!-- Details Tab --}} - {{> systems/ds4/templates/item/partials/details.hbs}} - {{/if}} - -
    \ No newline at end of file diff --git a/src/templates/item/partials/description.hbs b/src/templates/item/partials/description.hbs deleted file mode 100644 index b7139387..00000000 --- a/src/templates/item/partials/description.hbs +++ /dev/null @@ -1,37 +0,0 @@ -{{!-- -Render a description tab. -Additional elements of the side-properties div can be handed over via the @partial-block. ---}} - -
    -
    - {{#if isOwned}} - {{#if (ne data.equipped undefined)}}
    - - -
    - {{/if}} -
    - - {{actor.name}} -
    - {{#if isPhysical}} -
    - - -
    -
    - - -
    - {{/if}} - {{else}} - {{localize "DS4.NotOwned"}} - {{/if}} - {{> @partial-block}} -
    -
    - {{editor content=data.description target="data.description" button=true owner=owner editable=editable}} -
    -
    \ No newline at end of file diff --git a/src/templates/item/partials/details.hbs b/src/templates/item/partials/details.hbs deleted file mode 100644 index 0408641a..00000000 --- a/src/templates/item/partials/details.hbs +++ /dev/null @@ -1,21 +0,0 @@ -{{!-- The item tab for details. --}} -
    - {{!-- As you add new fields, add them in here! --}} -
    -
    - - -
    -
    - - -
    -
    -
    \ No newline at end of file diff --git a/src/templates/item/partials/effects.hbs b/src/templates/item/partials/effects.hbs deleted file mode 100644 index b829bfac..00000000 --- a/src/templates/item/partials/effects.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{!-- Tab for the items view to manage effects --}} -
    -
      -
    1. -
      -
      Name
      - -
    2. - {{#each item.effects as |effect id|}} -
    3. -

      {{effect.label}}

      -
      - - -
      -
    4. - {{/each}} -
    -
    \ No newline at end of file diff --git a/src/templates/item/partials/sheet-header.hbs b/src/templates/item/partials/sheet-header.hbs deleted file mode 100644 index cef12b2b..00000000 --- a/src/templates/item/partials/sheet-header.hbs +++ /dev/null @@ -1,8 +0,0 @@ -
    - -
    -

    -

    {{localize (lookup config.itemTypes item.type)}}

    - {{> @partial-block}} -
    -
    \ No newline at end of file diff --git a/src/templates/item/racialAbility-sheet.hbs b/src/templates/item/racialAbility-sheet.hbs deleted file mode 100644 index e69b5fc5..00000000 --- a/src/templates/item/racialAbility-sheet.hbs +++ /dev/null @@ -1,8 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} - -
    diff --git a/src/templates/item/shield-sheet.hbs b/src/templates/item/shield-sheet.hbs deleted file mode 100644 index 4ef9c9f9..00000000 --- a/src/templates/item/shield-sheet.hbs +++ /dev/null @@ -1,14 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    -
    - - -
    -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} -
    \ No newline at end of file diff --git a/src/templates/item/specialCreatureAbility-sheet.hbs b/src/templates/item/specialCreatureAbility-sheet.hbs deleted file mode 100644 index 086ba9a5..00000000 --- a/src/templates/item/specialCreatureAbility-sheet.hbs +++ /dev/null @@ -1,15 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    -
    - - -
    -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} - -
    \ No newline at end of file diff --git a/src/templates/item/spell-sheet.hbs b/src/templates/item/spell-sheet.hbs deleted file mode 100644 index 4e180755..00000000 --- a/src/templates/item/spell-sheet.hbs +++ /dev/null @@ -1,72 +0,0 @@ -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - - -{{#*inline "unitDatum" }} -
    - -
    - - -
    -
    -{{/inline}} - - -{{!-- ======================================================================== --}} - - -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    -
    - - -
    -
    - - -
    -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}} -
    - - -
    - {{> unitDatum data=data property='maxDistance' localizeString='DS4.SpellMaxDistance' unitType='distance' }} - {{> unitDatum data=data property='effectRadius' localizeString='DS4.SpellEffectRadius' unitType='distance' }} - {{> unitDatum data=data property='duration' localizeString='DS4.SpellDuration' unitType='temporal' }} - {{> unitDatum data=data property='cooldownDuration' localizeString='DS4.SpellCooldownDuration' unitType='temporal' }} -
    - - -
    - {{/systems/ds4/templates/item/partials/body.hbs}} - -
    diff --git a/src/templates/item/talent-sheet.hbs b/src/templates/item/talent-sheet.hbs deleted file mode 100644 index 22257d81..00000000 --- a/src/templates/item/talent-sheet.hbs +++ /dev/null @@ -1,32 +0,0 @@ -{{!-- ======================================================================== --}} -{{!-- INLINE PARTIAL DEFINITIONS --}} -{{!-- ======================================================================== --}} - - -{{#*inline "talentRankBasicProperty" }} -
    - - -
    -{{/inline}} - - -{{!-- ======================================================================== --}} - - -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    - {{> talentRankBasicProperty data=data property='base' localizeString='DS4.TalentRankBase' }} - {{> talentRankBasicProperty data=data property='max' localizeString='DS4.TalentRankMax'}} - {{> talentRankBasicProperty data=data property='mod' localizeString='DS4.TalentRankMod'}} - {{> talentRankBasicProperty data=data property='total' localizeString='DS4.TalentRankTotal' disabled='disabled'}} -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} - -
    diff --git a/src/templates/item/trinket-sheet.hbs b/src/templates/item/trinket-sheet.hbs deleted file mode 100644 index bbd66400..00000000 --- a/src/templates/item/trinket-sheet.hbs +++ /dev/null @@ -1,7 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} -
    \ No newline at end of file diff --git a/src/templates/item/weapon-sheet.hbs b/src/templates/item/weapon-sheet.hbs deleted file mode 100644 index b92bf97f..00000000 --- a/src/templates/item/weapon-sheet.hbs +++ /dev/null @@ -1,29 +0,0 @@ -
    - {{#> systems/ds4/templates/item/partials/sheet-header.hbs}} -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - {{/systems/ds4/templates/item/partials/sheet-header.hbs}} - - {{!-- Common Item body --}} - {{#> systems/ds4/templates/item/partials/body.hbs}}{{/systems/ds4/templates/item/partials/body.hbs}} -
    \ No newline at end of file diff --git a/src/templates/roll/roll-options.hbs b/src/templates/roll/roll-options.hbs deleted file mode 100644 index 8c3e7dc3..00000000 --- a/src/templates/roll/roll-options.hbs +++ /dev/null @@ -1,16 +0,0 @@ -
    - - - - - - - - - - -
    diff --git a/src/ui/fonts.ts b/src/ui/fonts.ts new file mode 100644 index 00000000..48959058 --- /dev/null +++ b/src/ui/fonts.ts @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +const basicFonts = ["Wood Stamp"]; +const variantFonts = ["Lora"]; + +export async function preloadFonts(): Promise { + const fonts = [ + ...basicFonts.map((font) => `1rem ${font}`), + ...variantFonts.flatMap((font) => [ + `1rem ${font}`, + `bold 1rem ${font}`, + `italic 1rem ${font}`, + `bold italic 1rem ${font}`, + ]), + ]; + return Promise.all(fonts.map((font) => document.fonts.load(font))); +} diff --git a/src/ui/notifications.js b/src/ui/notifications.js new file mode 100644 index 00000000..db311eba --- /dev/null +++ b/src/ui/notifications.js @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { logger } from "../utils/logger"; +import { getNotificationsSafe } from "../utils/utils"; + +/** + * @typedef {Object} NotificationOptions + * @property {boolean} [permanent=false] + * @property {boolean} [log=false] + */ + +/** + * @typedef {(message: string, options?: NotificationOptions) => void} NotificationFunction + */ + +/** + * @typedef {"info" | "warn" | "error"} NotificationType + */ + +/** + * @param {NotificationType} type The type of the notification + * @returns {NotificationFunction} + */ +function getNotificationFunction(type) { + return (message, { permanent = false, log = false } = {}) => { + if (ui.notifications) { + ui.notifications[type](message, { permanent }); + if (log) { + logger[type](message); + } + } else { + logger[type](message); + } + }; +} + +/** + * @param {string} message + * @param {NotificationType} type + * @param {NotificationOptions} [options={}] + */ +function notify(message, type, { permanent = false, log = false } = {}) { + const notifications = getNotificationsSafe(); + if (notifications) { + notifications.notify(message, type, { permanent }); + if (log) { + logger.getLoggingFunction(type)(message); + } + } else { + logger.getLoggingFunction(type)(message); + } +} + +export const notifications = Object.freeze({ + info: getNotificationFunction("info"), + warn: getNotificationFunction("warn"), + error: getNotificationFunction("error"), + notify, +}); diff --git a/src/utils/logger.ts b/src/utils/logger.ts new file mode 100644 index 00000000..07429720 --- /dev/null +++ b/src/utils/logger.ts @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +const loggingContext = "DS4"; +const loggingSeparator = "|"; + +type LogLevel = "debug" | "info" | "warning" | "error"; +type LoggingFunction = (...data: unknown[]) => void; + +const getLoggingFunction = (type: LogLevel = "info"): LoggingFunction => { + const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; + return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); +}; + +export const logger = Object.freeze({ + debug: getLoggingFunction("debug"), + info: getLoggingFunction("info"), + warn: getLoggingFunction("warning"), + error: getLoggingFunction("error"), + getLoggingFunction, +}); diff --git a/src/utils/utils.js b/src/utils/utils.js new file mode 100644 index 00000000..f7fec6cb --- /dev/null +++ b/src/utils/utils.js @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +/** + * Tests if the given `value` is truthy. + * + * If it is not truthy, an {@link Error} is thrown, which depends on the given `message` parameter: + * - If `message` is a string`, it is used to construct a new {@link Error} which then is thrown. + * - If `message` is an instance of {@link Error}, it is thrown. + * - If `message` is `undefined`, an {@link Error} with a default message is thrown. + * @param {unknown} value The value to check for truthyness + * @param {string | Error} [message] An error message to use when the check fails + * @returns {asserts value} + */ +export function enforce(value, message) { + if (!value) { + if (!message) { + message = + getGameSafe()?.i18n.localize("DS4.ErrorUnexpectedError") ?? + "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12)."; + } + throw message instanceof Error ? message : new Error(message); + } +} + +/** + * A wrapper that returns the canvas, if it is ready. + * @throws if the canvas is not ready yet + * @returns {Canvas} + */ +export function getCanvas() { + enforce(canvas instanceof Canvas && canvas.ready, getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); + return canvas; +} + +/** + * A wrapper that returns the game, if it already exists. + * @throws {Error} if the game is not ready yet + * @returns {Game} + */ +export function getGame() { + enforce(game instanceof Game, "Game is not initialized yet."); + return game; +} + +/** + * A wrapper that returns the game, or `undefined` if it doesn't exist yet + * @returns {Game | undefined} + */ +export function getGameSafe() { + return game instanceof Game ? game : undefined; +} + +/** + * A wrapper that returns `ui.notifications`, or `undefined` if it doesn't exist yet + * @returns {Notifications | undefined} + */ +export function getNotificationsSafe() { + return ui.notifications instanceof Notifications ? ui.notifications : undefined; +} diff --git a/system.json b/system.json new file mode 100644 index 00000000..36245e6f --- /dev/null +++ b/system.json @@ -0,0 +1,127 @@ +{ + "id": "ds4", + "title": "Dungeonslayers 4", + "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", + "authors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de", + "discord": "ghost#2000", + "ko-fi": "ghostfvtt" + }, + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" + }, + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" + }, + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" + }, + { + "name": "Max Tharr" + }, + { + "name": "Sascha Martens" + } + ], + "license": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/LICENSE.md", + "readme": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/README.md", + "bugs": "https://git.f3l.de/dungeonslayers/ds4/issues", + "changelog": "https://git.f3l.de/dungeonslayers/ds4/releases/tag/2.0.5", + "version": "2.0.5", + "flags": { + "hotReload": { + "extensions": ["css", "hbs", "json"], + "paths": ["templates", "css", "lang"] + } + }, + "compatibility": { + "minimum": "12.331", + "verified": "12" + }, + "esmodules": ["ds4.js"], + "styles": ["css/ds4.css"], + "languages": [ + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "de", + "name": "Deutsch", + "path": "lang/de.json" + } + ], + "packs": [ + { + "name": "special-creature-abilities", + "label": "Besondere Kreaturenfähigkeiten (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/special-creature-abilities", + "type": "Item" + }, + { + "name": "languages-and-scripts", + "label": "Sprachen und Schriftzeichen (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/languages-and-scripts", + "type": "Item" + }, + { + "name": "equipment", + "label": "Gegenstände (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/items", + "type": "Item" + }, + { + "name": "spells", + "label": "Zauber (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/spells", + "type": "Item" + }, + { + "name": "creatures", + "label": "Kreaturen (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/creatures", + "type": "Actor" + }, + { + "name": "racial-abilities", + "label": "Volksfähigkeiten (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/racial-abilities", + "type": "Item" + }, + { + "name": "talents", + "label": "Talente (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/talents", + "type": "Item" + } + ], + "manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json", + "download": "https://git.f3l.de/dungeonslayers/ds4/releases/download/2.0.5/ds4.zip", + "initiative": "@combatValues.initiative.total", + "grid": { + "distance": 1, + "units": "m" + }, + "primaryTokenAttribute": "combatValues.hitPoints", + "url": "https://git.f3l.de/dungeonslayers/ds4" +} diff --git a/system.json.license b/system.json.license new file mode 100644 index 00000000..45e761ff --- /dev/null +++ b/system.json.license @@ -0,0 +1,10 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Max Tharr +SPDX-FileCopyrightText: 2021 Sascha Martens + + +SPDX-License-Identifier: MIT diff --git a/template.json b/template.json new file mode 100644 index 00000000..acb087d0 --- /dev/null +++ b/template.json @@ -0,0 +1,247 @@ +{ + "Actor": { + "types": ["character", "creature"], + "templates": { + "base": { + "attributes": { + "body": { + "base": 0, + "mod": 0 + }, + "mobility": { + "base": 0, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "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": 0, + "value": 0 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + } + } + }, + "creature": { + "templates": ["base"], + "baseInfo": { + "loot": "", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 0, + "description": "" + } + }, + "character": { + "templates": ["base"], + "baseInfo": { + "race": "", + "class": "", + "heroClass": "", + "culture": "" + }, + "progression": { + "level": 0, + "experiencePoints": 0, + "talentPoints": { + "total": 0, + "used": 0 + }, + "progressPoints": { + "total": 0, + "used": 0 + } + }, + "profile": { + "biography": "", + "gender": "", + "birthday": "", + "birthplace": "", + "age": 0, + "height": 0, + "hairColor": "", + "weight": 0, + "eyeColor": "", + "specialCharacteristics": "" + }, + "currency": { + "gold": 0, + "silver": 0, + "copper": 0 + }, + "slayerPoints": { + "value": 0 + } + } + }, + "Item": { + "types": [ + "weapon", + "armor", + "shield", + "spell", + "equipment", + "loot", + "talent", + "racialAbility", + "language", + "alphabet", + "specialCreatureAbility" + ], + "templates": { + "base": { + "description": "" + }, + "physical": { + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-" + }, + "equipable": { + "equipped": false + }, + "protective": { + "armorValue": 0 + } + }, + "weapon": { + "templates": ["base", "physical", "equipable"], + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "armor": { + "templates": ["base", "physical", "equipable", "protective"], + "armorMaterialType": "cloth", + "armorType": "body" + }, + "shield": { + "templates": ["base", "physical", "equipable", "protective"] + }, + "spell": { + "templates": ["base", "equipable"], + "spellType": "spellcasting", + "spellModifier": { + "numerical": 0, + "complex": "" + }, + "allowsDefense": false, + "spellGroups": { + "lightning": false, + "earth": false, + "water": false, + "ice": false, + "fire": false, + "healing": false, + "light": false, + "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": "", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": "0r", + "minimumLevels": { + "healer": null, + "wizard": null, + "sorcerer": null + } + }, + "equipment": { + "templates": ["base", "physical", "equipable"] + }, + "loot": { + "templates": ["base", "physical"] + }, + "talent": { + "templates": ["base"], + "rank": { + "base": 0, + "max": 0, + "mod": 0 + } + }, + "racialAbility": { + "templates": ["base"] + }, + "language": { + "templates": ["base"] + }, + "alphabet": { + "templates": ["base"] + }, + "specialCreatureAbility": { + "templates": ["base"], + "experiencePoints": 0 + } + } +} diff --git a/template.json.license b/template.json.license new file mode 100644 index 00000000..ff79d3f7 --- /dev/null +++ b/template.json.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT diff --git a/templates/dialogs/roll-options.hbs b/templates/dialogs/roll-options.hbs new file mode 100644 index 00000000..406a512e --- /dev/null +++ b/templates/dialogs/roll-options.hbs @@ -0,0 +1,55 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a roll options dialog. It uses the default form classes of Foundry VTT. +!-- @param checkTargetNumber: The preselected check target number. +!-- @param maximumCoupResult: The preselected maximum coup result. +!-- @param minimumFumbleResult: The preselected minimum fumble result. +!-- @param rollMode: The preselected roll mode (= chat roll-mode). +!-- @param rollModes: A map of all roll modes and their i18n keys. +!-- @param checkModifiers: A map of all check difficulty modifiers and their translations. +!-- @param id: A unique id, used to provided uniqe ids for input elements. +--}} +
    +
    + + +
    +
    + +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    + +
    +
    +
    diff --git a/templates/dialogs/simple-select-form.hbs b/templates/dialogs/simple-select-form.hbs new file mode 100644 index 00000000..f27a489c --- /dev/null +++ b/templates/dialogs/simple-select-form.hbs @@ -0,0 +1,28 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a simple form with select elements. It uses the default form classes of Foundry VTT. +!-- @param selects: An array of objects that each contain the following: +!---- identifier: The identifier to use as id for the select element. Can be used to query the value later on. +!---- label: Text to display as the label for the select element. +!---- options: Key-value pairs that describe the options. The keys are used for the value attribute of the +options, the values are used as content. +--}} +
    + {{#each selects}} +
    + +
    + +
    +
    + {{/each}} +
    diff --git a/templates/dice/roll.hbs b/templates/dice/roll.hbs new file mode 100644 index 00000000..8afcbd10 --- /dev/null +++ b/templates/dice/roll.hbs @@ -0,0 +1,17 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{#if flavor}} +
    {{flavor}}
    + {{/if}} +
    +
    {{formula}}
    + {{{tooltip}}} +

    {{total}} +

    +
    +
    diff --git a/templates/sheets/active-effect/active-effect-config.hbs b/templates/sheets/active-effect/active-effect-config.hbs new file mode 100644 index 00000000..5a52247a --- /dev/null +++ b/templates/sheets/active-effect/active-effect-config.hbs @@ -0,0 +1,179 @@ +{{!-- +SPDX-FileCopyrightText: 2022 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + + +
    + +

    + +

    +
    + + + + + +
    +
    + +
    + +
    +
    + +
    + + {{editor descriptionHTML target="description" button=false editable=editable engine="prosemirror" + collaborate=false}} +
    + +
    + + +
    + + {{#if isActorEffect}} +
    + +
    + +
    +
    + {{/if}} + + {{#if isItemEffect}} +
    + +
    + +
    +

    {{ labels.transfer.hint }}

    +
    + {{/if}} + +
    + +
    + + {{#each statuses as |status|}} + + {{/each}} + +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    + + + + +
    +
    +
    + + +
    +
    +
    {{ localize "EFFECT.ChangeKey" }}
    +
    {{ localize "EFFECT.ChangeMode" }}
    +
    {{ localize "EFFECT.ChangeValue" }}
    +
    + +
    +
    +
      + {{#each data.changes as |change i|}} +
    1. +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
    2. + {{/each}} +
    +
    + +
    + +
    +
    diff --git a/templates/sheets/actor/character-sheet.hbs b/templates/sheets/actor/character-sheet.hbs new file mode 100644 index 00000000..556b4c1e --- /dev/null +++ b/templates/sheets/actor/character-sheet.hbs @@ -0,0 +1,50 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + {{> systems/ds4/templates/sheets/actor/components/character-properties.hbs}} + {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + + +{{!-- Sheet Body (remove indentation to avoid annoying Handlebars auto-indent) --}} +
    +{{!-- Values Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} + +{{!-- Inventory Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs}} + +{{!-- Spells Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} + +{{!-- Abilities Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs}} + +{{!-- Effects Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/effects.hbs}} + +{{!-- Biography Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/biography.hbs}} + +
    + + +
    diff --git a/templates/sheets/actor/components/actor-header.hbs b/templates/sheets/actor/components/actor-header.hbs new file mode 100644 index 00000000..c6b13c78 --- /dev/null +++ b/templates/sheets/actor/components/actor-header.hbs @@ -0,0 +1,33 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an actor sheet header. +!-- @param @partial-block: Properties to render in the second header row. +--}} +
    + {{localize 'DS4.ActorImageAltText'}} +
    +
    +

    + + +

    + {{#unless limited}} + {{> systems/ds4/templates/sheets/actor/components/actor-progression.hbs}} + {{/unless}} +
    + {{#unless limited}} +
    + {{> @partial-block}} +
    + {{/unless}} +
    +
    diff --git a/templates/sheets/actor/components/actor-progression.hbs b/templates/sheets/actor/components/actor-progression.hbs new file mode 100644 index 00000000..13e5b5f4 --- /dev/null +++ b/templates/sheets/actor/components/actor-progression.hbs @@ -0,0 +1,49 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    +
    +

    +

    + +
    + {{#if (eq data.type "character")}} + {{#if settings.showSlayerPoints}} +
    +

    +

    + +
    + {{/if}} +
    +

    +

    + +
    +
    +

    +

    + +
    + {{/if}} +
    diff --git a/templates/sheets/actor/components/biography.hbs b/templates/sheets/actor/components/biography.hbs new file mode 100644 index 00000000..b8e1befb --- /dev/null +++ b/templates/sheets/actor/components/biography.hbs @@ -0,0 +1,10 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{editor data.system.profile.biography target="system.profile.biography" button=true owner=owner + editable=editable engine="prosemirror"}} +
    diff --git a/templates/sheets/actor/components/character-properties.hbs b/templates/sheets/actor/components/character-properties.hbs new file mode 100644 index 00000000..ddc02909 --- /dev/null +++ b/templates/sheets/actor/components/character-properties.hbs @@ -0,0 +1,64 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    +
    + + +
    +
    + + +
    +
    + +
    + + / + + +
    +
    +
    + +
    + + / + + +
    +
    +
    + + +
    +
    + + +
    +
    diff --git a/templates/sheets/actor/components/check.hbs b/templates/sheets/actor/components/check.hbs new file mode 100644 index 00000000..44e50266 --- /dev/null +++ b/templates/sheets/actor/components/check.hbs @@ -0,0 +1,19 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a check. +!-- +!-- @param check-key: The key of the combat value +!-- @param check-target-number: The check target number +!-- @param check-label: The label for the check +--}} + + diff --git a/templates/sheets/actor/components/checks.hbs b/templates/sheets/actor/components/checks.hbs new file mode 100644 index 00000000..f0bbc30e --- /dev/null +++ b/templates/sheets/actor/components/checks.hbs @@ -0,0 +1,12 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{#each config.i18n.checks as |check-label check-key|}} + {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key check-target-number=(lookup + ../data.system.checks check-key) check-label=check-label}} + {{/each}} +
    diff --git a/templates/sheets/actor/components/combat-value.hbs b/templates/sheets/actor/components/combat-value.hbs new file mode 100644 index 00000000..78177d69 --- /dev/null +++ b/templates/sheets/actor/components/combat-value.hbs @@ -0,0 +1,32 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a combat value. +!-- +!-- @param combat-value-key: The key of the combat value +!-- @param combat-value-data: The data for the combat value +!-- @param combat-value-title: The title for the combat value +!-- @param combat-value-label: The label for the combat value (possibly an abbreviation) +!-- @param actor-id: The id of the actor the core value belongs to +--}} + +
    +
    + {{combat-value-data.total}} +
    + {{combat-value-label}} +
    + {{combat-value-data.base}} + + + +
    +
    diff --git a/templates/sheets/actor/components/combat-values.hbs b/templates/sheets/actor/components/combat-values.hbs new file mode 100644 index 00000000..e71f548e --- /dev/null +++ b/templates/sheets/actor/components/combat-values.hbs @@ -0,0 +1,15 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{#each config.i18n.combatValues as |combat-value-title combat-value-key|}} + {{> systems/ds4/templates/sheets/actor/components/combat-value.hbs combat-value-key=combat-value-key + combat-value-data=(lookup ../data.system.combatValues combat-value-key) combat-value-label=(lookup + ../config.i18n.combatValuesSheet combat-value-key) combat-value-title=combat-value-title + actor-id=../data._id}} + {{/each}} +
    diff --git a/templates/sheets/actor/components/core-value.hbs b/templates/sheets/actor/components/core-value.hbs new file mode 100644 index 00000000..498178eb --- /dev/null +++ b/templates/sheets/actor/components/core-value.hbs @@ -0,0 +1,34 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a core value. +!-- +!-- @param core-value-label: The label to display for the core value +!-- @param core-value-key: The key of the core value +!-- @param core-value-data: The data for the core value +!-- @param core-value-variant: The variant of the core value, i.e. attribute or trait +!-- @param actor-id: The id of the actor the core value belongs to +--}} + +
    + +
    + + + + + + {{core-value-data.total}} +
    +
    diff --git a/templates/sheets/actor/components/core-values.hbs b/templates/sheets/actor/components/core-values.hbs new file mode 100644 index 00000000..57ba03dd --- /dev/null +++ b/templates/sheets/actor/components/core-values.hbs @@ -0,0 +1,19 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{#each config.i18n.attributes as |attribute-label attribute-key|}} + {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=attribute-label + core-value-key=attribute-key core-value-data=(lookup ../data.system.attributes + attribute-key) core-value-variant="attribute" actor-id=../data._id}} + {{/each}} + {{#each config.i18n.traits as |trait-label trait-key|}} + {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=trait-label + core-value-key=trait-key + core-value-data=(lookup ../data.system.traits trait-key) core-value-variant="trait" actor-id=../data._id}} + {{/each}} +
    diff --git a/templates/sheets/actor/components/creature-properties.hbs b/templates/sheets/actor/components/creature-properties.hbs new file mode 100644 index 00000000..25d20a54 --- /dev/null +++ b/templates/sheets/actor/components/creature-properties.hbs @@ -0,0 +1,44 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    diff --git a/templates/sheets/actor/components/currency.hbs b/templates/sheets/actor/components/currency.hbs new file mode 100644 index 00000000..b9b019a2 --- /dev/null +++ b/templates/sheets/actor/components/currency.hbs @@ -0,0 +1,16 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT +--}} + +

    {{localize 'DS4.CharacterCurrency'}}

    +
    + {{#each data.system.currency as |value key|}} + + + {{/each}} +
    diff --git a/templates/sheets/actor/components/description.hbs b/templates/sheets/actor/components/description.hbs new file mode 100644 index 00000000..dac3ba05 --- /dev/null +++ b/templates/sheets/actor/components/description.hbs @@ -0,0 +1,10 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{editor data.system.baseInfo.description target="system.baseInfo.description" button=true owner=owner + editable=editable engine="prosemirror"}} +
    diff --git a/templates/sheets/actor/components/effect-list-entry.hbs b/templates/sheets/actor/components/effect-list-entry.hbs new file mode 100644 index 00000000..9fd21553 --- /dev/null +++ b/templates/sheets/actor/components/effect-list-entry.hbs @@ -0,0 +1,37 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an effect list entry row. +!-- @param effectData: The data of the item. +--}} +
  • + {{!-- enabled --}} + + + {{!-- active --}} + {{#if effectData.active}}{{else}}{{/if}} + + {{!-- img --}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img + alt=(localize "DS4.DocumentImageAltText" name=effectData.label) title=effectData.label}} + + {{!-- name --}} +
    {{effectData.name}}
    + + {{!-- source name --}} +
    {{effectData.sourceName}}
    + + {{!-- factor --}} +
    {{effectData.factor}}
    + + {{!-- control button group --}} + {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="effect" + editTitle="DS4.UserInteractionEditEffectTitle" deleteTitle="DS4.UserInteractionDeleteEffectTitle"}} +
  • diff --git a/templates/sheets/actor/components/effect-list-header.hbs b/templates/sheets/actor/components/effect-list-header.hbs new file mode 100644 index 00000000..113103f2 --- /dev/null +++ b/templates/sheets/actor/components/effect-list-header.hbs @@ -0,0 +1,32 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an effect list header row. +--}} +
  • + {{!-- enabled --}} +
    {{localize 'DS4.EffectEnabledAbbr'}}
    + + {{!-- active --}} +
    {{localize 'DS4.EffectActiveAbbr'}}
    + + {{!-- icon --}} +
    + + {{!-- name --}} +
    {{localize 'DS4.EffectName'}}
    + + {{!-- source name --}} +
    {{localize 'DS4.EffectSourceName'}}
    + + {{!-- factor --}} +
    {{localize 'DS4.EffectFactorAbbr'}}
    + + {{!-- control buttons placeholder --}} +
    +
  • diff --git a/templates/sheets/actor/components/item-list-entry.hbs b/templates/sheets/actor/components/item-list-entry.hbs new file mode 100644 index 00000000..9456f976 --- /dev/null +++ b/templates/sheets/actor/components/item-list-entry.hbs @@ -0,0 +1,57 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an item list entry row. +!-- If the partial is called with a partial block, the partial block +!-- content is inserted before the description. +!-- @param item: The item. +!-- @param isEquipable: A flag to enable the equipped column. +!-- @param hasQuantity: A flag to enable the quantity column. +!-- @param hideDescription: A flag to disable the description column. +!-- @param @partial-block: Custom column headers can be passed using the partial block. +--}} +
  • + {{!-- equipped --}} + {{#if isEquipable}} + + {{/if}} + + {{!-- image --}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=(and item.system.rollable + @root/editable) + src=item.img alt=(localize "DS4.DocumentImageAltText" name=item.name) title=item.name + rollableTitle=(localize "DS4.RollableImageRollableTitle" name=item.name) rollableClass="rollable-item"}} + + {{!-- amount --}} + {{#if hasQuantity}} + + {{/if}} + + {{!-- name --}} + + + {{!-- item type specifics --}} + {{#if @partial-block }} + {{> @partial-block}} + {{/if}} + + {{!-- description --}} + {{#unless hideDescription}} +
    + {{{item.system.description}}}
    + {{/unless}} + + {{!-- control button group --}} + {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="item" + editTitle="DS4.UserInteractionEditItemTitle" deleteTitle="DS4.UserInteractionDeleteItemTitle"}} +
  • diff --git a/templates/sheets/actor/components/item-list-header.hbs b/templates/sheets/actor/components/item-list-header.hbs new file mode 100644 index 00000000..9778e98e --- /dev/null +++ b/templates/sheets/actor/components/item-list-header.hbs @@ -0,0 +1,54 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an item list header row. +!-- If the partial is called with a partial block, the partial block +!-- content is inserted before the description heading. +!-- @param isEquipable: A flag to enable the equipped column. +!-- @param hasQuantity: A flag to enable the quantity column. +!-- @param hideDescription: A flag to disable the description column. +!-- @param type: The type of the items in this table. +!-- @param @partial-block: Custom column headers can be passed using the partial block. +--}} +
  • + {{!-- equipped --}} + {{#if isEquipable}} +
    + {{localize 'DS4.ItemEquippedAbbr'}}
    + {{/if}} + + {{!-- image --}} +
    + + {{!-- amount --}} + {{#if hasQuantity}} +
    #
    + {{/if}} + + {{!-- name --}} +
    {{localize 'DS4.ItemName'}} +
    + + {{!-- item type specifics --}} + {{#if @partial-block }} + {{> @partial-block }} + {{/if}} + + {{!-- description --}} + {{#unless hideDescription}} +
    {{localize + 'DS4.Description'}}
    + {{/unless}} + + {{!-- control buttons placeholder --}} +
    +
  • diff --git a/templates/sheets/actor/components/items-overview.hbs b/templates/sheets/actor/components/items-overview.hbs new file mode 100644 index 00000000..935c77c6 --- /dev/null +++ b/templates/sheets/actor/components/items-overview.hbs @@ -0,0 +1,175 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe +SPDX-FileCopyrightText: 2021 Siegfried Krug + +SPDX-License-Identifier: MIT +--}} + +{{!-- WEAPONS --}} +

    {{localize 'DS4.ItemTypeWeaponPlural'}}

    +{{#unless (isEmpty itemsByType.weapon)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true + type='weapon'}} + {{!-- attack type --}} +
      + {{localize + 'DS4.AttackTypeAbbr'}}
      + + {{!-- weapon bonus --}} +
      + {{localize 'DS4.WeaponBonusAbbr'}} +
      + + {{!-- opponent defense --}} +
      + {{localize 'DS4.OpponentDefenseAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + + {{#each itemsByType.weapon as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + hasQuantity=true}} + {{!-- attack type --}} + + + {{!-- weapon bonus --}} +
      {{ item.system.weaponBonus}}
      + + {{!-- opponent defense --}} +
      + {{#if item.system.opponentDefenseForAttackType.melee includeZero=true}} + {{#if item.system.opponentDefenseForAttackType.ranged includeZero=true}} + {{item.system.opponentDefenseForAttackType.melee}}/{{item.system.opponentDefenseForAttackType.ranged}} + {{else}} + {{item.system.opponentDefenseForAttackType.melee}} + {{/if}} + {{else}} + {{item.system.opponentDefenseForAttackType.ranged}} + {{/if}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' +documentType='item' type='weapon'}} + +{{!-- ARMOR --}} +

    {{localize 'DS4.ItemTypeArmorPlural'}}

    +{{#unless (isEmpty itemsByType.armor)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true + type="armor"}} + {{!-- armor material type --}} +
      {{localize 'DS4.ArmorMaterialTypeAbbr'}}
      + + {{!-- armor type --}} +
      {{localize 'DS4.ArmorTypeAbbr'}}
      + + {{!-- armor value --}} +
      + {{localize 'DS4.ArmorValueAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + + {{#each itemsByType.armor as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + hasQuantity=true}} + {{!-- armor material type --}} +
      + {{lookup @root/config.i18n.armorMaterialTypesAbbr item.system.armorMaterialType}} +
      + + {{!-- armor type --}} +
      + {{lookup @root/config.i18n.armorTypesAbbr item.system.armorType}} +
      + + {{!-- armor value --}} +
      {{ item.system.armorValue}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' +documentType='item' type='armor'}} + +{{!-- SHIELD --}} +

    {{localize 'DS4.ItemTypeShieldPlural'}}

    +{{#unless (isEmpty itemsByType.shield)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true + type='shield'}} + {{!-- armor value --}} +
      + {{localize 'DS4.ArmorValueAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.shield as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + hasQuantity=true}} + {{!-- armor value --}} +
      {{item.system.armorValue}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' +documentType='item' type='shield'}} + +{{!-- EQUIPMENT --}} +

    {{localize 'DS4.ItemTypeEquipmentPlural'}}

    +{{#unless (isEmpty itemsByType.equipment)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true + type='equipment'}} + {{!-- storage location --}} +
      {{localize 'DS4.StorageLocation'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.equipment as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + hasQuantity=true}} + {{!-- storage location --}} + + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' +documentType='item' type='equipment'}} + +{{!-- LOOT --}} +

    {{localize 'DS4.ItemTypeLootPlural'}}

    +{{#unless (isEmpty itemsByType.loot)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs hasQuantity=true type='loot'}} + {{!-- storage location --}} +
      {{localize 'DS4.StorageLocation'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.loot as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item hasQuantity=true}} + {{!-- storage location --}} + + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' +documentType='item' type='loot'}} diff --git a/templates/sheets/actor/components/profile.hbs b/templates/sheets/actor/components/profile.hbs new file mode 100644 index 00000000..86884939 --- /dev/null +++ b/templates/sheets/actor/components/profile.hbs @@ -0,0 +1,29 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{#each data.system.profile as |profile-data-value profile-data-key|}} + {{#if (and (ne profile-data-key 'biography') (ne profile-data-key 'specialCharacteristics'))}} +
    + + +
    + {{/if}} + {{/each}} +
    + + +
    +
    diff --git a/templates/sheets/actor/creature-sheet.hbs b/templates/sheets/actor/creature-sheet.hbs new file mode 100644 index 00000000..b23ba54b --- /dev/null +++ b/templates/sheets/actor/creature-sheet.hbs @@ -0,0 +1,46 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + {{> systems/ds4/templates/sheets/actor/components/creature-properties.hbs}} + {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Values Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} + + {{!-- Inventory Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs}} + + {{!-- Spells Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} + + {{!-- Abilities Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/effects.hbs}} + + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/description.hbs}} +
    +
    diff --git a/templates/sheets/actor/limited-sheet.hbs b/templates/sheets/actor/limited-sheet.hbs new file mode 100644 index 00000000..66497eb2 --- /dev/null +++ b/templates/sheets/actor/limited-sheet.hbs @@ -0,0 +1,21 @@ +{{!-- +SPDX-FileCopyrightText: 2022 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} + + + {{!-- Sheet Body --}} +
    + {{#if (eq data.type 'character')}} + {{> systems/ds4/templates/sheets/actor/components/biography.hbs}} + {{else}} + {{> systems/ds4/templates/sheets/actor/components/description.hbs}} + {{/if}} +
    +
    diff --git a/templates/sheets/actor/tabs/biography.hbs b/templates/sheets/actor/tabs/biography.hbs new file mode 100644 index 00000000..4c131119 --- /dev/null +++ b/templates/sheets/actor/tabs/biography.hbs @@ -0,0 +1,17 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +
    + + + {{!-- remove indentation to avoid annoying Handlebars auto-indent --}} +{{> systems/ds4/templates/sheets/actor/components/profile.hbs}} +{{> systems/ds4/templates/sheets/actor/components/biography.hbs}} + + +
    +
    diff --git a/templates/sheets/actor/tabs/character-abilities.hbs b/templates/sheets/actor/tabs/character-abilities.hbs new file mode 100644 index 00000000..55857a7b --- /dev/null +++ b/templates/sheets/actor/tabs/character-abilities.hbs @@ -0,0 +1,67 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- TALENT --}} +

    {{localize 'DS4.ItemTypeTalentPlural'}}

    + {{#unless (isEmpty itemsByType.talent)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='talent'}} + {{!-- rank --}} +
      {{localize 'DS4.TalentRank'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.talent as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} + {{!-- rank --}} +
      {{toRomanNumerals item.system.rank.total}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='talent'}} + + {{!-- RACIAL ABILITY --}} +

    {{localize 'DS4.ItemTypeRacialAbilityPlural'}}

    + {{#unless (isEmpty itemsByType.racialAbility)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='racialAbility'}} + {{#each itemsByType.racialAbility as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='racialAbility'}} + + {{!-- LANGUAGE --}} +

    {{localize 'DS4.ItemTypeLanguagePlural'}}

    + {{#unless (isEmpty itemsByType.language)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='language'}} + {{#each itemsByType.language as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='language'}} + + {{!-- ALPHABET --}} +

    {{localize 'DS4.ItemTypeAlphabetPlural'}}

    + {{#unless (isEmpty itemsByType.alphabet)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='alphabet'}} + {{#each itemsByType.alphabet as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='alphabet'}} +
    diff --git a/templates/sheets/actor/tabs/character-inventory.hbs b/templates/sheets/actor/tabs/character-inventory.hbs new file mode 100644 index 00000000..4134199e --- /dev/null +++ b/templates/sheets/actor/tabs/character-inventory.hbs @@ -0,0 +1,11 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{> systems/ds4/templates/sheets/actor/components/currency.hbs}} + {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} +
    diff --git a/templates/sheets/actor/tabs/creature-abilities.hbs b/templates/sheets/actor/tabs/creature-abilities.hbs new file mode 100644 index 00000000..b0ea8d9d --- /dev/null +++ b/templates/sheets/actor/tabs/creature-abilities.hbs @@ -0,0 +1,19 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{#unless (isEmpty itemsByType.specialCreatureAbility)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='specialCreatureAbility'}} + {{#each itemsByType.specialCreatureAbility as |item id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='specialCreatureAbility'}} +
    diff --git a/templates/sheets/actor/tabs/creature-inventory.hbs b/templates/sheets/actor/tabs/creature-inventory.hbs new file mode 100644 index 00000000..22260661 --- /dev/null +++ b/templates/sheets/actor/tabs/creature-inventory.hbs @@ -0,0 +1,10 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} +
    diff --git a/templates/sheets/actor/tabs/description.hbs b/templates/sheets/actor/tabs/description.hbs new file mode 100644 index 00000000..3f202525 --- /dev/null +++ b/templates/sheets/actor/tabs/description.hbs @@ -0,0 +1,9 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{> systems/ds4/templates/sheets/actor/components/description.hbs}} +
    diff --git a/templates/sheets/actor/tabs/effects.hbs b/templates/sheets/actor/tabs/effects.hbs new file mode 100644 index 00000000..b799fc48 --- /dev/null +++ b/templates/sheets/actor/tabs/effects.hbs @@ -0,0 +1,19 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +
    + {{#unless (isEmpty enrichedEffects)}} +
      + {{> systems/ds4/templates/sheets/actor/components/effect-list-header.hbs}} + {{#each enrichedEffects as |effectData id| }} + {{> systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs effectData=effectData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddEffectTitle' + documentType='effect'}} +
    diff --git a/templates/sheets/actor/tabs/spells.hbs b/templates/sheets/actor/tabs/spells.hbs new file mode 100644 index 00000000..cee615e6 --- /dev/null +++ b/templates/sheets/actor/tabs/spells.hbs @@ -0,0 +1,101 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- ======================================================================== --}} +{{!-- INLINE PARTIAL DEFINITIONS --}} +{{!-- ======================================================================== --}} + +{{!-- +!-- Base template to display a value with unit. +!-- @param unitDatum: the object to display; must have a value and a unit attribute +!-- @param titleKey: The key of the localized title to use. +!-- @param unitNames: mapping of allowed unitDatum.unit values to localized unit name +!-- @param unitAbbrs: mapping of allowed unitDatum.unit values to unit abbreviation +--}} +{{#*inline "unit"}} +
    + {{#if unitDatum.value }} + {{unitDatum.value}} {{lookup unitAbbrs unitDatum.unit}} + {{else}}-{{/if}} +
    +{{/inline}} + +{{!-- +!-- Two templates based on the "unit" template for displaying values with unit. +!-- Both accept a `config` object holding the unitNames and unitAbbr instead of +!-- directly handing over the latter two. +!-- @param titleKey: The key of the localized title to use. +--}} +{{#*inline "temporalUnit"}} +{{> unit unitNames=config.i18n.temporalUnits unitAbbrs=config.i18n.temporalUnitsAbbr unitDatum=unitDatum +titleKey=titleKey}} +{{/inline}} + +{{#*inline "distanceUnit"}} +{{> unit unitNames=config.i18n.distanceUnits unitAbbrs=config.i18n.distanceUnitsAbbr unitDatum=unitDatum +titleKey=titleKey}} +{{/inline}} + + +{{!-- ======================================================================== --}} + + +
    + {{#unless (isEmpty itemsByType.spell)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hideDescription=true + type='spell'}} + {{!-- spell type --}} +
      {{localize 'DS4.SpellTypeAbbr'}}
      + + {{!-- spell modifier --}} +
      {{localize + 'DS4.SpellModifierAbbr'}}
      + + {{!-- max. distance --}} +
      + + {{!-- duration --}} +
      + + {{!-- cooldown duration --}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + + {{#each itemsByType.spell as |item id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + hideDescription=true}} + {{!-- spell type --}} + + + {{!-- spell modifier --}} +
      {{#if (eq item.system.spellModifier.complex + '')}}{{item.system.spellModifier.numerical}}{{else}}{{item.system.spellModifier.complex}}{{/if}} +
      + + {{!-- max. distance --}} + {{> distanceUnit titleKey='DS4.SpellDistance' unitDatum=item.system.maxDistance + config=@root/config}} + + {{!-- duration --}} + {{> temporalUnit titleKey='DS4.SpellDuration' unitDatum=item.system.duration config=@root/config}} + + {{!-- cooldown duration --}} +
      {{lookup @root/config.i18n.cooldownDurations + item.system.cooldownDuration}}
      + + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' + documentType='item' type='spell'}} +
    diff --git a/templates/sheets/actor/tabs/values.hbs b/templates/sheets/actor/tabs/values.hbs new file mode 100644 index 00000000..3c3668f0 --- /dev/null +++ b/templates/sheets/actor/tabs/values.hbs @@ -0,0 +1,11 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{> systems/ds4/templates/sheets/actor/components/core-values.hbs}} + {{> systems/ds4/templates/sheets/actor/components/combat-values.hbs}} + {{> systems/ds4/templates/sheets/actor/components/checks.hbs}} +
    diff --git a/templates/sheets/item/alphabet-sheet.hbs b/templates/sheets/item/alphabet-sheet.hbs new file mode 100644 index 00000000..f7089cf6 --- /dev/null +++ b/templates/sheets/item/alphabet-sheet.hbs @@ -0,0 +1,25 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/armor-sheet.hbs b/templates/sheets/item/armor-sheet.hbs new file mode 100644 index 00000000..78d8be64 --- /dev/null +++ b/templates/sheets/item/armor-sheet.hbs @@ -0,0 +1,36 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/armor.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/protective.hbs}} + {{#if isOwned}} + {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} + {{/if}} + {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/components/effect-list-entry.hbs b/templates/sheets/item/components/effect-list-entry.hbs new file mode 100644 index 00000000..47c452ce --- /dev/null +++ b/templates/sheets/item/components/effect-list-entry.hbs @@ -0,0 +1,22 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an effect list entry row. +!-- @param effectData: The data of the item. +--}} +
  • + {{!-- img --}} + {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img + alt=(localize "DS4.DocumentImageAltText" name=effectData.name) title=effectData.name}} + + {{!-- name --}} +
    {{effectData.name}}
    + + {{!-- control button group --}} + {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="effect" + editTitle="DS4.UserInteractionEditEffectTitle" deleteTitle="DS4.UserInteractionDeleteEffectTitle"}} +
  • diff --git a/templates/sheets/item/components/effect-list-header.hbs b/templates/sheets/item/components/effect-list-header.hbs new file mode 100644 index 00000000..625163a0 --- /dev/null +++ b/templates/sheets/item/components/effect-list-header.hbs @@ -0,0 +1,19 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an effect list header row. +--}} +
  • + {{!-- icon --}} +
    + + {{!-- name --}} +
    {{localize 'DS4.EffectName'}}
    + + {{!-- control buttons placeholder --}} +
    +
  • diff --git a/templates/sheets/item/components/item-header.hbs b/templates/sheets/item/components/item-header.hbs new file mode 100644 index 00000000..9eac3872 --- /dev/null +++ b/templates/sheets/item/components/item-header.hbs @@ -0,0 +1,18 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{localize 'DS4.ItemImageAltText'}} +
    +

    {{lookup config.i18n.itemTypes item.type}}

    +

    + + +

    +
    +
    diff --git a/templates/sheets/item/components/properties/armor.hbs b/templates/sheets/item/components/properties/armor.hbs new file mode 100644 index 00000000..458bd65b --- /dev/null +++ b/templates/sheets/item/components/properties/armor.hbs @@ -0,0 +1,25 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesArmor'}}

    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    diff --git a/templates/sheets/item/components/properties/equipable.hbs b/templates/sheets/item/components/properties/equipable.hbs new file mode 100644 index 00000000..899effd3 --- /dev/null +++ b/templates/sheets/item/components/properties/equipable.hbs @@ -0,0 +1,14 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesEquipable'}}

    +
    + + +
    +
    diff --git a/templates/sheets/item/components/properties/physical.hbs b/templates/sheets/item/components/properties/physical.hbs new file mode 100644 index 00000000..bd15ac0e --- /dev/null +++ b/templates/sheets/item/components/properties/physical.hbs @@ -0,0 +1,34 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesPhysical'}}

    +
    + + +
    +
    + +
    + +
    +
    + {{#if isOwned}} +
    + + +
    +
    + + +
    + {{/if}} +
    diff --git a/templates/sheets/item/components/properties/protective.hbs b/templates/sheets/item/components/properties/protective.hbs new file mode 100644 index 00000000..50190196 --- /dev/null +++ b/templates/sheets/item/components/properties/protective.hbs @@ -0,0 +1,14 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesProtective'}}

    +
    + + +
    +
    diff --git a/templates/sheets/item/components/properties/special-creature-ability.hbs b/templates/sheets/item/components/properties/special-creature-ability.hbs new file mode 100644 index 00000000..293f2697 --- /dev/null +++ b/templates/sheets/item/components/properties/special-creature-ability.hbs @@ -0,0 +1,15 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesSpecialCreatureAbility'}}

    +
    + + +
    +
    diff --git a/templates/sheets/item/components/properties/spell.hbs b/templates/sheets/item/components/properties/spell.hbs new file mode 100644 index 00000000..2d1069b8 --- /dev/null +++ b/templates/sheets/item/components/properties/spell.hbs @@ -0,0 +1,118 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesSpell'}}

    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + {{#each config.i18n.spellGroups as |value key|}} +
    + + +
    + {{/each}} +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + + + +
    +
    +
    + +
    + {{data.system.price}} +
    +
    +
    diff --git a/templates/sheets/item/components/properties/talent.hbs b/templates/sheets/item/components/properties/talent.hbs new file mode 100644 index 00000000..bb8e70b3 --- /dev/null +++ b/templates/sheets/item/components/properties/talent.hbs @@ -0,0 +1,26 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesTalent'}}

    +
    + +
    + + + + +
    + + + + {{data.system.rank.total}} +
    +
    +
    diff --git a/templates/sheets/item/components/properties/weapon.hbs b/templates/sheets/item/components/properties/weapon.hbs new file mode 100644 index 00000000..703a0c25 --- /dev/null +++ b/templates/sheets/item/components/properties/weapon.hbs @@ -0,0 +1,27 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    +

    {{localize 'DS4.ItemPropertiesWeapon'}}

    +
    + +
    + +
    +
    +
    + + +
    +
    + + +
    +
    diff --git a/templates/sheets/item/equipment-sheet.hbs b/templates/sheets/item/equipment-sheet.hbs new file mode 100644 index 00000000..eeb322ff --- /dev/null +++ b/templates/sheets/item/equipment-sheet.hbs @@ -0,0 +1,34 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{#if isOwned}} + {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} + {{/if}} + {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/language-sheet.hbs b/templates/sheets/item/language-sheet.hbs new file mode 100644 index 00000000..f7089cf6 --- /dev/null +++ b/templates/sheets/item/language-sheet.hbs @@ -0,0 +1,25 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/loot-sheet.hbs b/templates/sheets/item/loot-sheet.hbs new file mode 100644 index 00000000..0216ecc5 --- /dev/null +++ b/templates/sheets/item/loot-sheet.hbs @@ -0,0 +1,31 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/racialAbility-sheet.hbs b/templates/sheets/item/racialAbility-sheet.hbs new file mode 100644 index 00000000..f7089cf6 --- /dev/null +++ b/templates/sheets/item/racialAbility-sheet.hbs @@ -0,0 +1,25 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/shield-sheet.hbs b/templates/sheets/item/shield-sheet.hbs new file mode 100644 index 00000000..6b9c8803 --- /dev/null +++ b/templates/sheets/item/shield-sheet.hbs @@ -0,0 +1,35 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/protective.hbs}} + {{#if isOwned}} + {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} + {{/if}} + {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/specialCreatureAbility-sheet.hbs b/templates/sheets/item/specialCreatureAbility-sheet.hbs new file mode 100644 index 00000000..83b3be7d --- /dev/null +++ b/templates/sheets/item/specialCreatureAbility-sheet.hbs @@ -0,0 +1,31 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/spell-sheet.hbs b/templates/sheets/item/spell-sheet.hbs new file mode 100644 index 00000000..1291a407 --- /dev/null +++ b/templates/sheets/item/spell-sheet.hbs @@ -0,0 +1,34 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/spell.hbs}} + {{#if isOwned}} + {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} + {{/if}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/tabs/description.hbs b/templates/sheets/item/tabs/description.hbs new file mode 100644 index 00000000..cde3089c --- /dev/null +++ b/templates/sheets/item/tabs/description.hbs @@ -0,0 +1,10 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{editor data.system.description target="system.description" button=true owner=owner + editable=editable engine="prosemirror"}} +
    diff --git a/templates/sheets/item/tabs/effects.hbs b/templates/sheets/item/tabs/effects.hbs new file mode 100644 index 00000000..0e76c5ef --- /dev/null +++ b/templates/sheets/item/tabs/effects.hbs @@ -0,0 +1,18 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{#unless (isEmpty data.effects)}} +
      + {{> systems/ds4/templates/sheets/item/components/effect-list-header.hbs}} + {{#each data.effects as |effectData id| }} + {{> systems/ds4/templates/sheets/item/components/effect-list-entry.hbs effectData=effectData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddEffectTitle' + documentType='effect'}} +
    diff --git a/templates/sheets/item/tabs/properties.hbs b/templates/sheets/item/tabs/properties.hbs new file mode 100644 index 00000000..b5deffc4 --- /dev/null +++ b/templates/sheets/item/tabs/properties.hbs @@ -0,0 +1,9 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{> @partial-block}} +
    diff --git a/templates/sheets/item/talent-sheet.hbs b/templates/sheets/item/talent-sheet.hbs new file mode 100644 index 00000000..a6faf4f4 --- /dev/null +++ b/templates/sheets/item/talent-sheet.hbs @@ -0,0 +1,31 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/talent.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/item/weapon-sheet.hbs b/templates/sheets/item/weapon-sheet.hbs new file mode 100644 index 00000000..c08ff3de --- /dev/null +++ b/templates/sheets/item/weapon-sheet.hbs @@ -0,0 +1,35 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +
    + {{!-- Header --}} + {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Properties Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} + {{> systems/ds4/templates/sheets/item/components/properties/weapon.hbs}} + {{#if isOwned}} + {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} + {{/if}} + {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} + {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} +
    +
    diff --git a/templates/sheets/shared/components/add-button.hbs b/templates/sheets/shared/components/add-button.hbs new file mode 100644 index 00000000..1b7f0089 --- /dev/null +++ b/templates/sheets/shared/components/add-button.hbs @@ -0,0 +1,22 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{! +!-- Render an "add" button. +!-- @param documentType: The type of document this button controls, item or effect +!-- @param title: The title to use for the link element (will be localized) +!-- @param type: An optional property to use as data-type attribute +}} +{{#if @root/editable}} + +{{/if}} diff --git a/templates/sheets/shared/components/control-button-group.hbs b/templates/sheets/shared/components/control-button-group.hbs new file mode 100644 index 00000000..007e28ae --- /dev/null +++ b/templates/sheets/shared/components/control-button-group.hbs @@ -0,0 +1,22 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Gesina Schwalbe + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render a group of an "edit" and a "delete" button. +!-- The current item is defined by the a corresponding id attribute of the parent li element. +!-- @param documentType: The type of document that is controlled by this button group, item or effect +!-- @param editTitle: The title to use for the edit link element (will be localized) +!-- @param deleteTitle: The title to use for the delete link element (will be localized) +--}} +
    + {{#if @root/editable}} + + + {{/if}} +
    diff --git a/templates/sheets/shared/components/rollable-image.hbs b/templates/sheets/shared/components/rollable-image.hbs new file mode 100644 index 00000000..6447aa60 --- /dev/null +++ b/templates/sheets/shared/components/rollable-image.hbs @@ -0,0 +1,25 @@ +{{!-- +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT +--}} + +{{!-- +!-- Render an image that has a dice overlay image. +!-- @param rollable: A flag indicating whether or not the image is actually rollable. +!-- @param rollableClass: The CSS class(es) to add if the image is rollable. +!-- @param title: The title for the rollable image if it is not actually rollable. +!-- @param rollableTitle: The title for the rollable image if it is rollable. +!-- @param src: The path to the image. +!-- @param alt: An alternate text for the image. +--}} +
    + {{#if src}} + {{alt}} + {{/if}} + {{#if rollable}} + {{localize 'DS4.DiceOverlayImageAltText'}} + {{/if}} +
    diff --git a/tools/bump-version.js b/tools/bump-version.js new file mode 100644 index 00000000..825b6631 --- /dev/null +++ b/tools/bump-version.js @@ -0,0 +1,103 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import fs from "fs-extra"; +import semver from "semver"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; + +const packageType = "system"; +const repositoryOwner = process.env.CI_REPO_OWNER; +const repositoryName = process.env.CI_REPO_NAME; +const repositoryURL = process.env.CI_REPO_URL; +const forgeURL = process.env.CI_FORGE_URL; + +const getManifestUrl = (channel) => + `${forgeURL}/api/packages/${repositoryOwner}/generic/${repositoryName}/${channel}/${packageType}.json`; +const getDownloadURL = (version) => `${repositoryURL}/releases/download/${version}/${repositoryName}.zip`; +const bugsURL = `${repositoryURL}/issues`; +const getChangelogURL = (version) => `${repositoryURL}/releases/tag/${version}`; +const getReadmeURL = (version) => `${repositoryURL}/raw/tag/${version}/README.md`; +const getLicenseURL = (version) => `${repositoryURL}/raw/tag/${version}/LICENSE.md`; + +const manifestPath = `${packageType}.json`; + +/** + * Get the contents of the manifest file as object. + * @returns {unknown} An object describing the manifest + */ +function getManifest() { + if (fs.existsSync(manifestPath)) { + return fs.readJSONSync(manifestPath); + } +} + +/** + * Get the target version based on on the current version and the argument passed as release. + * @param {string} currentVersion The current version + * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version + * @returns {string | null} The target version + */ +function getTargetVersion(currentVersion, release) { + if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) { + return semver.inc(currentVersion, release); + } else { + return semver.valid(release); + } +} + +/** + * Get the channel for a given version. + * @param {string} version The version for which to get the channel + * @returns {"latest" | "beta"} The channel for the version + */ +function getChannel(version) { + return version.includes("-") ? "beta" : "latest"; +} + +/** + * Update version and download URL. + * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version + */ +function bumpVersion(release) { + if (!release) { + throw new Error("Missing release type"); + } + + const packageJson = fs.readJSONSync("package.json"); + const manifest = getManifest(); + if (!manifest) throw new Error("Manifest JSON not found"); + + const currentVersion = packageJson.version; + const targetVersion = getTargetVersion(currentVersion, release); + + if (!targetVersion) { + throw new Error("Incorrect version arguments"); + } + if (targetVersion === currentVersion) { + throw new Error("Target version is identical to current version"); + } + + console.log(`Bumping version number to '${targetVersion}'`); + packageJson.version = targetVersion; + fs.writeJSONSync("package.json", packageJson, { spaces: 2 }); + manifest.version = targetVersion; + manifest.url = repositoryURL; + manifest.manifest = getManifestUrl(getChannel(targetVersion)); + manifest.download = getDownloadURL(targetVersion); + manifest.bugs = bugsURL; + manifest.changelog = getChangelogURL(targetVersion); + manifest.readme = getReadmeURL(targetVersion); + manifest.license = getLicenseURL(targetVersion); + fs.writeJSONSync(manifestPath, manifest, { spaces: 2 }); +} + +const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("release", { + alias: "r", + type: "string", + demandOption: true, + description: "Either a semver release type or a valid semver version", +}).argv; +const release = argv.r; +bumpVersion(release); diff --git a/tools/const.js b/tools/const.js new file mode 100644 index 00000000..bdad530c --- /dev/null +++ b/tools/const.js @@ -0,0 +1,9 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +export const name = "ds4"; +export const sourceDirectory = "./src"; +export const distDirectory = "./dist"; +export const destinationDirectory = "systems"; +export const foundryconfigFile = "./foundryconfig.json"; diff --git a/tools/link-package.js b/tools/link-package.js new file mode 100644 index 00000000..7fb452e8 --- /dev/null +++ b/tools/link-package.js @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2021 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import fs from "fs-extra"; +import path from "node:path"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; + +import { destinationDirectory, distDirectory, foundryconfigFile, name } from "./const.js"; + +/** + * Get the data path of Foundry VTT based on what is configured in the {@link foundryconfigFile}. + */ +function getDataPath() { + const config = fs.readJSONSync(foundryconfigFile); + + if (config?.dataPath) { + if (!fs.existsSync(path.resolve(config.dataPath))) { + throw new Error("User data path invalid, no Data directory found"); + } + return path.resolve(config.dataPath); + } else { + throw new Error(`No user data path defined in ${foundryconfigFile}`); + } +} +/** + * Link the built package to the user data folder. + * @param {boolean} clean Whether to remove the link instead of creating it + */ +async function linkPackage(clean) { + if (!fs.existsSync(path.resolve("system.json"))) { + throw new Error("Could not find system.json"); + } + + const linkDirectory = path.resolve(getDataPath(), "Data", destinationDirectory, name); + + if (clean) { + console.log(`Removing link to built package at ${linkDirectory}.`); + await fs.remove(linkDirectory); + } else if (!fs.existsSync(linkDirectory)) { + console.log(`Linking built package to ${linkDirectory}.`); + await fs.ensureDir(path.resolve(linkDirectory, "..")); + await fs.symlink(path.resolve(".", distDirectory), linkDirectory); + } +} + +const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("clean", { + alias: "c", + type: "boolean", + default: false, + description: "Remove the link instead of creating it", +}).argv; +const clean = argv.c; +await linkPackage(clean); diff --git a/tools/packs.sh b/tools/packs.sh new file mode 100755 index 00000000..3a77ca93 --- /dev/null +++ b/tools/packs.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2023 Johannes Loher +# +# SPDX-License-Identifier: MIT + +pack() { + packs=$(ls -1 ./packs) + for pack in $packs; do + pnpm exec fvtt package pack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./packs/$pack --outputDirectory=./dist/packs + done +} + +unpack() { + packs=$(ls -1 ./dist/packs) + rm -rf ./packs/* + for pack in $packs; do + pnpm exec fvtt package unpack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./dist/packs --outputDirectory=./packs/$pack + done +} + +case $1 in + "pack") pack + ;; + "unpack") unpack + ;; + *) echo "Usage: $0 " + ;; +esac diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 00000000..b587f711 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["src", "spec", "*.js"] +} diff --git a/tsconfig.eslint.json.license b/tsconfig.eslint.json.license new file mode 100644 index 00000000..31803f36 --- /dev/null +++ b/tsconfig.eslint.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher + +SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f988dd5b..9a2ce2d3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,20 @@ { - "compilerOptions": { - "target": "ES2017", - "lib": ["DOM", "ES6", "ES2017"], - "types": ["foundry-pc-types"], - "esModuleInterop": true - } + "compilerOptions": { + "outDir": "dist", + "target": "ES2021", + "lib": ["ES2021", "DOM"], + "types": ["@types/jquery", "handlebars"], + "esModuleInterop": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + "resolveJsonModule": true, + "verbatimModuleSyntax": true, + "checkJs": false, + "allowJs": true, + "skipLibCheck": true + }, + "include": ["src", "client", "common"] } diff --git a/tsconfig.json.license b/tsconfig.json.license new file mode 100644 index 00000000..409f785b --- /dev/null +++ b/tsconfig.json.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Johannes Loher +SPDX-FileCopyrightText: 2021 Oliver Rümpelein + +SPDX-License-Identifier: MIT diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..244a02e5 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2022 Johannes Loher +// +// SPDX-License-Identifier: MIT + +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + setupFiles: ["./spec/setup.ts"], + }, +});