Compare commits
197 commits
Author | SHA1 | Date | |
---|---|---|---|
3ca9f31def | |||
a60a24b502 | |||
0ce81169c5 | |||
5544e6f4ff | |||
7294e18bb4 | |||
00b0c61fad | |||
2f28d5f417 | |||
51c59a6661 | |||
94976451ab | |||
f0c87c8160 | |||
505cb7468d | |||
dc4b7eb19f | |||
576af4b0dc | |||
6519db52d4 | |||
75b47f654e | |||
fcbf96728b | |||
1aab186285 | |||
58827f0a13 | |||
adcf073767 | |||
888d325839 | |||
0d6e90bd03 | |||
464d0c1532 | |||
91e6aeae9e | |||
a57f59e7a4 | |||
10bcd72e06 | |||
36cfe53e5e | |||
2e739ea74d | |||
8d734a8866 | |||
7ac88207cf | |||
a63e008a90 | |||
ca0fa06ea3 | |||
b099f4921a | |||
e9f27fd440 | |||
e897c34eb1 | |||
d0568f5c4c | |||
bcca5af4f1 | |||
f11702c611 | |||
a657616f20 | |||
913238cacf | |||
d5af049c26 | |||
33875419b0 | |||
7f197f2082 | |||
b3927d5386 | |||
235603bc26 | |||
de5d3c0dee | |||
b491217cad | |||
e6a768e6a0 | |||
3868e37e61 | |||
89d7830e2b | |||
b724ec02f7 | |||
cbab5fcd7e | |||
65297ae25e | |||
6d6b7f4702 | |||
9ced545e95 | |||
33974ce5b4 | |||
4b307dc05f | |||
5b08e52161 | |||
7ea98ade6d | |||
9b515af2cb | |||
0ba0f0555d | |||
6823af9779 | |||
149c2c302b | |||
46713d3fd5 | |||
caac1d3882 | |||
0bbe834345 | |||
c809782df3 | |||
a88a09c8d5 | |||
6bcc17082e | |||
0baf2c8972 | |||
25bb1c97ad | |||
6fe2c4e211 | |||
f5b4982299 | |||
8495a93b00 | |||
1259e3f9be | |||
cda8af89ae | |||
ac7a34d188 | |||
3ccf33fa08 | |||
f270481b76 | |||
3cef898abf | |||
d1180bf7df | |||
d19e327f4c | |||
7426ca274b | |||
2a42f8b29f | |||
a823fdbf00 | |||
066c2b519f | |||
9f00002105 | |||
241c12fbdb | |||
436393edbe | |||
845272ca2f | |||
cedad40674 | |||
a559e3f757 | |||
377e7934bb | |||
0bc55acc24 | |||
4a0ce3cabf | |||
32eb87a9fd | |||
405f9282e8 | |||
212e8c1d33 | |||
8275431a5f | |||
f9d960f5b2 | |||
6d7a224453 | |||
981f751dc6 | |||
0e457ec062 | |||
![]() |
e4c19341bf | ||
d10c32cd70 | |||
![]() |
d43bfdd660 | ||
![]() |
caf0d70c5c | ||
5bf71441d7 | |||
![]() |
2fb69390a6 | ||
7ffd9706af | |||
27992aa4d6 | |||
ca88e4975d | |||
c2d083b7fe | |||
b4310f531d | |||
216d812cad | |||
27ca6ec375 | |||
e5aed880e5 | |||
f614027da5 | |||
8007302d75 | |||
4971b6c5e6 | |||
c9e793f12a | |||
8a1541b5bc | |||
c54b97c1bf | |||
54cd50f2eb | |||
1a005d12af | |||
e9c0665adb | |||
bd7609c322 | |||
bf329ae87e | |||
ec0608b00a | |||
baccb02b14 | |||
654a51c2b5 | |||
c1a33062af | |||
1364450962 | |||
b15d9cf10b | |||
3f27641ab5 | |||
dcdc6356f4 | |||
c34af4d356 | |||
d0f1a492f9 | |||
ed75b33989 | |||
89e56e4a21 | |||
c9c5b20c9f | |||
612aa3b020 | |||
82995162dd | |||
ad8eac4e98 | |||
5285ef1088 | |||
5773c43793 | |||
5eca94039a | |||
655196cb1c | |||
5f3cfb8247 | |||
3950db5fcd | |||
f095e33e67 | |||
b3d303e380 | |||
cbc091ddb0 | |||
6821abce61 | |||
f53fac6645 | |||
c23d37c911 | |||
25c4b15237 | |||
a198a26345 | |||
536b67f193 | |||
8de98d8ff7 | |||
a4b7600326 | |||
2370fe14ab | |||
1ca2ad23b6 | |||
3ed1c6196d | |||
8500606450 | |||
c9cd7b2725 | |||
2813f3ee00 | |||
4668484905 | |||
29d9f02556 | |||
19dfec62af | |||
038afc1019 | |||
116aa8e919 | |||
68a3d240b0 | |||
db97b38d49 | |||
a626943052 | |||
16b04a540a | |||
ddfa89c9c2 | |||
33c00ab630 | |||
3b30838c16 | |||
cd88b75774 | |||
b483098b07 | |||
66896fb61e | |||
23743ca5de | |||
3b3794d3ac | |||
58aec5fe19 | |||
912e84999b | |||
c0c07cf214 | |||
![]() |
65096d11b8 | ||
3d00caa31f | |||
5d8e34ce5f | |||
![]() |
dbac03fbad | ||
95a595773d | |||
753b934534 | |||
![]() |
261d7a8b5a | ||
704798cc27 | |||
a578cbff0d | |||
![]() |
512728bf30 | ||
![]() |
53b0fb3732 |
23 changed files with 3566 additions and 3708 deletions
.gitea/ISSUE_TEMPLATE
.vscode
.woodpecker
.yarn
plugins/@yarnpkg
releases
sdks
src
tools
yarn.lock
|
@ -4,96 +4,96 @@
|
|||
|
||||
name: Bug Report
|
||||
about: File a bug report
|
||||
labels: ["bug", "to be confirmed"]
|
||||
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/tickwerk/issues) before submitting a new one.
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/tickwerk/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 Tickwerk 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
|
||||
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 Tickwerk 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
|
||||
|
|
|
@ -4,25 +4,25 @@
|
|||
|
||||
name: Feature Request
|
||||
description: Submit a feature request
|
||||
labels: ["feature"]
|
||||
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/tickwerk/issues) before submitting a new one.
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/tickwerk/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
|
||||
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
|
||||
|
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
@ -4,5 +4,5 @@
|
|||
"**/.pnp.*": true
|
||||
},
|
||||
"eslint.nodePath": ".yarn/sdks",
|
||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
|
||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.js"
|
||||
}
|
||||
|
|
|
@ -5,41 +5,41 @@
|
|||
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
|
||||
|
||||
variables:
|
||||
- &node_image node:lts
|
||||
- &node_image node:lts
|
||||
|
||||
when:
|
||||
- event: push
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
- event: pull_request
|
||||
- event: tag
|
||||
- event: manual
|
||||
- event: push
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
- event: pull_request
|
||||
- event: tag
|
||||
- event: manual
|
||||
|
||||
steps:
|
||||
install:
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn install --immutable
|
||||
lint:
|
||||
group: check
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn lint
|
||||
reuse:
|
||||
group: check
|
||||
image: fsfe/reuse:latest
|
||||
commands:
|
||||
- reuse lint
|
||||
commitlint:
|
||||
group: check
|
||||
image: *node_image
|
||||
commands:
|
||||
- git fetch
|
||||
- yarn run commitlint --from origin/${CI_COMMIT_TARGET_BRANCH}
|
||||
when:
|
||||
event: pull_request
|
||||
build:
|
||||
group: build
|
||||
image: *node_image
|
||||
commands:
|
||||
- export APPDATA=$(pwd)
|
||||
- yarn build
|
||||
install:
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn install --immutable
|
||||
lint:
|
||||
group: check
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn lint
|
||||
reuse:
|
||||
group: check
|
||||
image: fsfe/reuse:latest
|
||||
commands:
|
||||
- reuse lint
|
||||
commitlint:
|
||||
group: check
|
||||
image: *node_image
|
||||
commands:
|
||||
- git fetch
|
||||
- yarn run commitlint --from origin/${CI_COMMIT_TARGET_BRANCH}
|
||||
when:
|
||||
event: pull_request
|
||||
build:
|
||||
group: build
|
||||
image: *node_image
|
||||
commands:
|
||||
- export APPDATA=$(pwd)
|
||||
- yarn build
|
||||
|
|
|
@ -77,15 +77,15 @@ steps:
|
|||
- forge_token
|
||||
publish-to-foundry-admin:
|
||||
group: publish
|
||||
image: johannesloher/foundry-publish
|
||||
image: johannesloher/foundry-publish:v2.4.1
|
||||
environment:
|
||||
FVTT_DELETE_OBSOLETE_VERSIONS: 'true'
|
||||
FVTT_USE_NEW_PACKAGE_ADMINISTRATION_INTERFACE: 'true'
|
||||
commands:
|
||||
- export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/module.json
|
||||
- export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/module.json
|
||||
- foundry-publish
|
||||
secrets:
|
||||
- fvtt_package_id
|
||||
- fvtt_username
|
||||
- fvtt_password
|
||||
when:
|
||||
|
|
|
@ -5,37 +5,38 @@
|
|||
$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json
|
||||
|
||||
variables:
|
||||
- &node_image node:lts
|
||||
- &node_image node:lts
|
||||
|
||||
when:
|
||||
event: manual
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event: manual
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
|
||||
depends_on:
|
||||
- checks
|
||||
- checks
|
||||
|
||||
steps:
|
||||
install:
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn install --immutable
|
||||
release:
|
||||
image: *node_image
|
||||
commands:
|
||||
- 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}
|
||||
- yarn bump-version --release=${RELEASE_TYPE}
|
||||
- export RELEASE_VERSION=$(jq -r '.version' < package.json)
|
||||
- git --no-pager diff
|
||||
- git add package.json module.json
|
||||
- 'git commit -m "chore(release): $${RELEASE_VERSION}"'
|
||||
- git tag -f $${RELEASE_VERSION}
|
||||
- git push origin ${CI_COMMIT_BRANCH}
|
||||
- git push origin $${RELEASE_VERSION}
|
||||
secrets:
|
||||
- forge_token_name
|
||||
- forge_token
|
||||
install:
|
||||
image: *node_image
|
||||
commands:
|
||||
- yarn install --immutable
|
||||
release:
|
||||
image: *node_image
|
||||
commands:
|
||||
- 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}
|
||||
- yarn bump-version --release=${RELEASE_TYPE}
|
||||
- export RELEASE_VERSION=$(jq -r '.version' < package.json)
|
||||
- yarn prettier --write package.json module.json
|
||||
- git --no-pager diff
|
||||
- git add package.json module.json
|
||||
- 'git commit -m "chore(release): $${RELEASE_VERSION}"'
|
||||
- git tag -f $${RELEASE_VERSION}
|
||||
- git push origin ${CI_COMMIT_BRANCH}
|
||||
- git push origin $${RELEASE_VERSION}
|
||||
secrets:
|
||||
- forge_token_name
|
||||
- forge_token
|
||||
|
|
File diff suppressed because one or more lines are too long
874
.yarn/releases/yarn-3.6.0.cjs
vendored
874
.yarn/releases/yarn-3.6.0.cjs
vendored
File diff suppressed because one or more lines are too long
934
.yarn/releases/yarn-4.6.0.cjs
vendored
Executable file
934
.yarn/releases/yarn-4.6.0.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
20
.yarn/sdks/eslint/lib/unsupported-api.js
vendored
Normal file
20
.yarn/sdks/eslint/lib/unsupported-api.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const {existsSync} = require(`fs`);
|
||||
const {createRequire} = require(`module`);
|
||||
const {resolve} = require(`path`);
|
||||
|
||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||
|
||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||
const absRequire = createRequire(absPnpApiPath);
|
||||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require eslint/use-at-your-own-risk
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real eslint/use-at-your-own-risk your application uses
|
||||
module.exports = absRequire(`eslint/use-at-your-own-risk`);
|
12
.yarn/sdks/eslint/package.json
vendored
12
.yarn/sdks/eslint/package.json
vendored
|
@ -1,6 +1,14 @@
|
|||
{
|
||||
"name": "eslint",
|
||||
"version": "8.28.0-sdk",
|
||||
"version": "8.52.0-sdk",
|
||||
"main": "./lib/api.js",
|
||||
"type": "commonjs"
|
||||
"type": "commonjs",
|
||||
"bin": {
|
||||
"eslint": "./bin/eslint.js"
|
||||
},
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./lib/api.js",
|
||||
"./use-at-your-own-risk": "./lib/unsupported-api.js"
|
||||
}
|
||||
}
|
||||
|
|
20
.yarn/sdks/prettier/bin-prettier.js
vendored
Executable file
20
.yarn/sdks/prettier/bin-prettier.js
vendored
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const {existsSync} = require(`fs`);
|
||||
const {createRequire} = require(`module`);
|
||||
const {resolve} = require(`path`);
|
||||
|
||||
const relPnpApiPath = "../../../.pnp.cjs";
|
||||
|
||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||
const absRequire = createRequire(absPnpApiPath);
|
||||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require prettier/bin-prettier.js
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real prettier/bin-prettier.js your application uses
|
||||
module.exports = absRequire(`prettier/bin-prettier.js`);
|
6
.yarn/sdks/prettier/index.js
vendored
Executable file → Normal file
6
.yarn/sdks/prettier/index.js
vendored
Executable file → Normal file
|
@ -11,10 +11,10 @@ const absRequire = createRequire(absPnpApiPath);
|
|||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require prettier/index.js
|
||||
// Setup the environment to be able to require prettier
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real prettier/index.js your application uses
|
||||
module.exports = absRequire(`prettier/index.js`);
|
||||
// Defer to the real prettier your application uses
|
||||
module.exports = absRequire(`prettier`);
|
||||
|
|
5
.yarn/sdks/prettier/package.json
vendored
5
.yarn/sdks/prettier/package.json
vendored
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"name": "prettier",
|
||||
"version": "2.8.0-sdk",
|
||||
"version": "2.8.8-sdk",
|
||||
"main": "./index.js",
|
||||
"type": "commonjs"
|
||||
"type": "commonjs",
|
||||
"bin": "./bin-prettier.js"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
nodeLinker: pnp
|
||||
|
||||
plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
||||
spec: '@yarnpkg/plugin-interactive-tools'
|
||||
yarnPath: .yarn/releases/yarn-4.6.0.cjs
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.6.0.cjs
|
||||
enableGlobalCache: false
|
||||
|
|
|
@ -10,7 +10,7 @@ SPDX-License-Identifier: MIT
|
|||
[](https://ci.f3l.de/repos/10)
|
||||
[](https://api.reuse.software/info/git.f3l.de/dungeonslayers/tickwerk)
|
||||
[](https://forge-vtt.com/bazaar#package=tickwerk)
|
||||
[](https://git.f3l.de/dungeonslayers/tickwerk)
|
||||
[](https://git.f3l.de/dungeonslayers/tickwerk)
|
||||
[](https://ko-fi.com/ghostfvtt)
|
||||
|
||||
A tick based combat system for [Foundry Virtual Tabletop].
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"module": "es2022",
|
||||
"target": "ES2022"
|
||||
"target": "ES2022",
|
||||
"strict": true
|
||||
},
|
||||
"exclude": ["node_modules", "dist"],
|
||||
"include": ["src", "client", "common"]
|
||||
|
|
84
module.json
84
module.json
|
@ -1,44 +1,46 @@
|
|||
{
|
||||
"id": "tickwerk",
|
||||
"title": "Tickwerk",
|
||||
"description": "A tick based combat system for Foundry Virtual Tabletop",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johannes Loher",
|
||||
"email": "johannes.loher@fg4f.de",
|
||||
"discord": "ghost#2000",
|
||||
"ko-fi": "ghostfvtt"
|
||||
}
|
||||
],
|
||||
"url": "https://git.f3l.de/dungeonslayers/Tickwerk",
|
||||
"license": "https://git.f3l.de/dungeonslayers/Tickwerk/raw/tag/1.3.1/LICENSE.md",
|
||||
"readme": "https://git.f3l.de/dungeonslayers/Tickwerk/raw/tag/1.3.1/README.md",
|
||||
"bugs": "https://git.f3l.de/dungeonslayers/Tickwerk/issues",
|
||||
"changelog": "https://git.f3l.de/dungeonslayers/Tickwerk/releases/tag/1.3.1",
|
||||
"version": "1.3.1",
|
||||
"compatibility": {
|
||||
"minimum": "10.290",
|
||||
"verified": "10"
|
||||
"id": "tickwerk",
|
||||
"title": "Tickwerk",
|
||||
"description": "A tick based combat system for Foundry Virtual Tabletop",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johannes Loher",
|
||||
"email": "johannes.loher@fg4f.de",
|
||||
"discord": "ghost#2000",
|
||||
"ko-fi": "ghostfvtt"
|
||||
}
|
||||
],
|
||||
"license": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.4.4/LICENSE.md",
|
||||
"readme": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.4.4/README.md",
|
||||
"bugs": "https://git.f3l.de/dungeonslayers/tickwerk/issues",
|
||||
"changelog": "https://git.f3l.de/dungeonslayers/tickwerk/releases/tag/1.4.4",
|
||||
"version": "1.4.4",
|
||||
"flags": {
|
||||
"hotReload": {
|
||||
"extensions": ["css", "hbs", "json"],
|
||||
"paths": ["templates", "styles", "lang"]
|
||||
}
|
||||
},
|
||||
"compatibility": {
|
||||
"minimum": "10.290",
|
||||
"verified": "11"
|
||||
},
|
||||
"esmodules": ["tickwerk.js"],
|
||||
"styles": ["styles/tickwerk.css"],
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"name": "English",
|
||||
"path": "lang/en.json"
|
||||
},
|
||||
"esmodules": [
|
||||
"tickwerk.js"
|
||||
],
|
||||
"styles": [
|
||||
"styles/tickwerk.css"
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"name": "English",
|
||||
"path": "lang/en.json"
|
||||
},
|
||||
{
|
||||
"lang": "de",
|
||||
"name": "Deutsch",
|
||||
"path": "lang/de.json"
|
||||
}
|
||||
],
|
||||
"manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/Tickwerk/latest/module.json",
|
||||
"download": "https://git.f3l.de/dungeonslayers/Tickwerk/releases/download/1.3.1/Tickwerk.zip",
|
||||
"manifestPlusVersion": "1.2.0"
|
||||
{
|
||||
"lang": "de",
|
||||
"name": "Deutsch",
|
||||
"path": "lang/de.json"
|
||||
}
|
||||
],
|
||||
"manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/tickwerk/latest/module.json",
|
||||
"download": "https://git.f3l.de/dungeonslayers/tickwerk/releases/download/1.4.4/tickwerk.zip",
|
||||
"manifestPlusVersion": "1.2.0",
|
||||
"url": "https://git.f3l.de/dungeonslayers/tickwerk"
|
||||
}
|
||||
|
|
112
package.json
112
package.json
|
@ -1,58 +1,58 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "tickwerk",
|
||||
"description": "A tick based combat system for Foundry Virtual Tabletop",
|
||||
"version": "1.3.1",
|
||||
"license": "https://git.f3l.de/dungeonslayers/tickwerk#licensing",
|
||||
"homepage": "https://git.f3l.de/dungeonslayers/tickwerk",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.f3l.de/dungeonslayers/tickwerk"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://git.f3l.de/dungeonslayers/tickwerk/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Johannes Loher",
|
||||
"email": "johannes.loher@fg4f.de"
|
||||
}
|
||||
],
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "run-s clean:files build:files",
|
||||
"build:files": "rollup -c",
|
||||
"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 --ext .js,.cjs,.mjs .",
|
||||
"lint:fix": "eslint --ext .js,.cjs,.mjs --fix .",
|
||||
"format": "prettier --write \"./**/*.(js|cjs|mjs|json|scss|yml)\"",
|
||||
"bump-version": "node ./tools/bump-version.js",
|
||||
"changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "17.6.5",
|
||||
"@commitlint/config-conventional": "17.6.5",
|
||||
"@guanghechen/rollup-plugin-copy": "5.0.1",
|
||||
"@swc/core": "1.3.62",
|
||||
"conventional-changelog-cli": "2.2.2",
|
||||
"conventional-changelog-conventionalcommits": "5.0.0",
|
||||
"eslint": "8.42.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"eslint-plugin-prettier": "4.2.1",
|
||||
"fs-extra": "11.1.1",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.8.8",
|
||||
"rimraf": "5.0.1",
|
||||
"rollup": "3.23.0",
|
||||
"rollup-plugin-styles": "4.0.0",
|
||||
"rollup-plugin-swc3": "0.8.2",
|
||||
"sass": "1.62.1",
|
||||
"semver": "7.5.1",
|
||||
"yargs": "17.7.2"
|
||||
},
|
||||
"packageManager": "yarn@3.6.0"
|
||||
"private": true,
|
||||
"name": "tickwerk",
|
||||
"description": "A tick based combat system for Foundry Virtual Tabletop",
|
||||
"version": "1.4.4",
|
||||
"license": "https://git.f3l.de/dungeonslayers/tickwerk#licensing",
|
||||
"homepage": "https://git.f3l.de/dungeonslayers/tickwerk",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.f3l.de/dungeonslayers/tickwerk"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://git.f3l.de/dungeonslayers/tickwerk/issues"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Johannes Loher",
|
||||
"email": "johannes.loher@fg4f.de"
|
||||
}
|
||||
],
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "run-s clean:files build:files",
|
||||
"build:files": "rollup -c",
|
||||
"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 --ext .js,.cjs,.mjs .",
|
||||
"lint:fix": "eslint --ext .js,.cjs,.mjs --fix .",
|
||||
"format": "prettier --write \"./**/*.(js|cjs|mjs|json|scss|yml|yaml)\"",
|
||||
"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",
|
||||
"@guanghechen/rollup-plugin-copy": "6.0.4",
|
||||
"@swc/core": "1.10.18",
|
||||
"conventional-changelog-cli": "5.0.0",
|
||||
"conventional-changelog-conventionalcommits": "8.0.0",
|
||||
"eslint": "8.57.1",
|
||||
"eslint-config-prettier": "10.0.1",
|
||||
"eslint-plugin-prettier": "4.2.1",
|
||||
"fs-extra": "11.3.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.8.8",
|
||||
"rimraf": "6.0.1",
|
||||
"rollup": "4.34.8",
|
||||
"rollup-plugin-styles": "4.0.0",
|
||||
"rollup-plugin-swc3": "0.12.1",
|
||||
"sass": "1.62.1",
|
||||
"semver": "7.7.1",
|
||||
"yargs": "17.7.2"
|
||||
},
|
||||
"packageManager": "yarn@4.6.0"
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ const CombatantMixin = (BaseCombatant) => {
|
|||
*/
|
||||
toggleWaiting() {
|
||||
const update = { [`flags.${packageId}.waiting`]: !this.waiting };
|
||||
if (this.parent?.started && this.waiting) update.initiative = this.parent?.round;
|
||||
if (this.parent?.started && this.waiting) update.initiative = this.parent?.tickValue;
|
||||
return this.update(update);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,8 @@ const CombatantMixin = (BaseCombatant) => {
|
|||
}
|
||||
|
||||
await this.update({ initiative: this.initiative + ticks });
|
||||
const advanceTime = ticks * CONFIG.time.roundTime;
|
||||
const tickTime = CONFIG.tickwerk?.tickTime;
|
||||
const advanceTime = tickTime !== undefined ? ticks * tickTime : undefined;
|
||||
if (advanceTime !== 0) {
|
||||
await this.combat?.update(undefined, { diff: false, advanceTime });
|
||||
}
|
||||
|
@ -111,14 +112,16 @@ const CombatantMixin = (BaseCombatant) => {
|
|||
* @param {object} data The data of the creation / update
|
||||
*/
|
||||
async #updateTiebreakerData(data) {
|
||||
if ('initiative' in data) {
|
||||
const waiting = data.flags?.[packageId]?.waiting;
|
||||
if ('initiative' in data || waiting !== undefined) {
|
||||
const newInitiative = data.initiative ?? this.initiative;
|
||||
const combatantsWithSameTickValue =
|
||||
this.parent?.combatants.filter((combatant) => {
|
||||
const otherInitiative =
|
||||
combatant._newInitiative !== undefined ? combatant._newInitiative : combatant.initiative;
|
||||
return otherInitiative === data.initiative;
|
||||
return otherInitiative === newInitiative && combatant !== this;
|
||||
}) ?? [];
|
||||
const tiebreaker = await this.#getTiebreaker(combatantsWithSameTickValue);
|
||||
const tiebreaker = await this.#getTiebreaker(combatantsWithSameTickValue, waiting);
|
||||
foundry.utils.setProperty(data, `flags.${packageId}.tiebreaker`, tiebreaker);
|
||||
this._newInitiative = data.initiative;
|
||||
this._newTiebreaker = tiebreaker;
|
||||
|
@ -128,11 +131,12 @@ const CombatantMixin = (BaseCombatant) => {
|
|||
/**
|
||||
* Get a tiebreaker between this combatant and the given other combatants.
|
||||
* @param {TickwerkCombatant[]} combatants The other combatants among which to find a tiebreaker
|
||||
* @param {boolean | undefined} waiting The change of the waiting state of the combatanmt
|
||||
* @returns {Promise<number>} A promise that resolves to the tiebreaker
|
||||
*/
|
||||
async #getTiebreaker(combatants) {
|
||||
async #getTiebreaker(combatants, waiting) {
|
||||
const getTiebreaker = CONFIG.tickwerk?.getTiebreaker ?? defaultGetTiebreaker;
|
||||
return getTiebreaker(this, combatants);
|
||||
return getTiebreaker(this, combatants, waiting);
|
||||
}
|
||||
|
||||
/** @override */
|
||||
|
@ -178,14 +182,14 @@ const CombatantMixin = (BaseCombatant) => {
|
|||
|
||||
/**
|
||||
* A function to get a tiebreaker for a combatant
|
||||
* @typedef {(combatant: TickwerkCombatant, combatants: TickwerkCombatant[]) => Promise<number>} GetTiebreaker
|
||||
* @typedef {(combatant: TickwerkCombatant, combatants: TickwerkCombatant[], waiting: boolean | undefined) => Promise<number>} GetTiebreaker
|
||||
*/
|
||||
|
||||
/**
|
||||
* Default implementation to get a tiebreaker for a combatant.
|
||||
* @type {GetTiebreaker}
|
||||
*/
|
||||
const defaultGetTiebreaker = async (combatant, combatants) => {
|
||||
export const defaultGetTiebreaker = async (combatant, combatants) => {
|
||||
if (combatants.length === 0) return 0;
|
||||
const tiebreakers = combatants.map((combatant) => {
|
||||
return (
|
||||
|
|
|
@ -7,14 +7,14 @@ import { getGame } from '../helpers';
|
|||
|
||||
export const registerDS4SpecificFunctionality = () => {
|
||||
if (CONFIG.tickwerk === undefined) CONFIG.tickwerk = {};
|
||||
foundry.utils.mergeObject(CONFIG.tickwerk, { getTiebreaker, getInitiativeFormula });
|
||||
foundry.utils.mergeObject(CONFIG.tickwerk, { getTiebreaker, getInitiativeFormula, tickTime: 0.5 });
|
||||
|
||||
registerRollItemSetting();
|
||||
Hooks.on('ds4.rollItem', onRollItem);
|
||||
};
|
||||
|
||||
/** @type {import("../data/documents/combatant").GetTiebreaker} */
|
||||
const getTiebreaker = async (combatant, combatants) => {
|
||||
const getTiebreaker = async (combatant, combatants, waiting) => {
|
||||
if (combatants.length === 0) return 0;
|
||||
|
||||
/** @type {number[]} */
|
||||
|
@ -26,7 +26,7 @@ const getTiebreaker = async (combatant, combatants) => {
|
|||
|
||||
for (const other of combatants) {
|
||||
const tiebreaker = other._newTiebreaker ?? other.getFlag(packageId, 'tiebreaker') ?? 0;
|
||||
if (getInitiative(other) > getInitiative(combatant)) {
|
||||
if (getInitiative(other) > getInitiative(combatant) || waiting === false) {
|
||||
lowerBounds.push(tiebreaker);
|
||||
} else if (getInitiative(other) < getInitiative(combatant)) {
|
||||
upperBounds.push(tiebreaker);
|
||||
|
@ -71,7 +71,7 @@ const getTiebreaker = async (combatant, combatants) => {
|
|||
const getInitiativeFormula = (combatant) => {
|
||||
const started = combatant.combat?.started ?? false;
|
||||
if (!started) return '-@combatValues.initiative.total';
|
||||
const tickValue = combatant.combat?.round ?? 0;
|
||||
const tickValue = combatant.combat?.tickValue ?? 0;
|
||||
return `max(${tickValue} + 10 - @combatValues.initiative.total, ${tickValue})`;
|
||||
};
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import { hideBin } from 'yargs/helpers';
|
|||
const packageType = 'module';
|
||||
const repositoryOwner = process.env.CI_REPO_OWNER;
|
||||
const repositoryName = process.env.CI_REPO_NAME;
|
||||
const repositoryURL = process.env.CI_REPO_LINK;
|
||||
const repositoryURL = process.env.CI_REPO_URL;
|
||||
const forgeURL = process.env.CI_FORGE_URL;
|
||||
|
||||
const getManifestUrl = (channel) =>
|
||||
|
@ -81,7 +81,7 @@ function bumpVersion(release) {
|
|||
|
||||
console.log(`Bumping version number to '${targetVersion}'`);
|
||||
packageJson.version = targetVersion;
|
||||
fs.writeJSONSync('package.json', packageJson, { spaces: 4 });
|
||||
fs.writeJSONSync('package.json', packageJson, { spaces: 2 });
|
||||
manifest.version = targetVersion;
|
||||
manifest.url = repositoryURL;
|
||||
manifest.manifest = getManifestUrl(getChannel(targetVersion));
|
||||
|
@ -90,7 +90,7 @@ function bumpVersion(release) {
|
|||
manifest.changelog = getChangelogURL(targetVersion);
|
||||
manifest.readme = getReadmeURL(targetVersion);
|
||||
manifest.license = getLicenseURL(targetVersion);
|
||||
fs.writeJSONSync(manifestPath, manifest, { spaces: 4 });
|
||||
fs.writeJSONSync(manifestPath, manifest, { spaces: 2 });
|
||||
}
|
||||
|
||||
const argv = yargs(hideBin(process.argv)).usage('Usage: $0').option('release', {
|
||||
|
|
Loading…
Reference in a new issue