Compare commits

..

No commits in common. "main" and "1.3.3" have entirely different histories.
main ... 1.3.3

22 changed files with 3640 additions and 3480 deletions

View file

@ -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

View file

@ -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

View file

@ -4,5 +4,5 @@
"**/.pnp.*": true
},
"eslint.nodePath": ".yarn/sdks",
"prettier.prettierPath": ".yarn/sdks/prettier/index.js"
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
}

View file

@ -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

View file

@ -77,15 +77,15 @@ steps:
- forge_token
publish-to-foundry-admin:
group: publish
image: johannesloher/foundry-publish:v2.4.1
image: johannesloher/foundry-publish
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:

View file

@ -5,38 +5,37 @@
$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)
- 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
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

File diff suppressed because one or more lines are too long

874
.yarn/releases/yarn-3.6.0.cjs vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,20 +0,0 @@
#!/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`);

View file

@ -1,14 +1,6 @@
{
"name": "eslint",
"version": "8.52.0-sdk",
"version": "8.28.0-sdk",
"main": "./lib/api.js",
"type": "commonjs",
"bin": {
"eslint": "./bin/eslint.js"
},
"exports": {
"./package.json": "./package.json",
".": "./lib/api.js",
"./use-at-your-own-risk": "./lib/unsupported-api.js"
}
"type": "commonjs"
}

View file

@ -1,20 +0,0 @@
#!/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 Normal file → Executable file
View 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
// Setup the environment to be able to require prettier/index.js
require(absPnpApiPath).setup();
}
}
// Defer to the real prettier your application uses
module.exports = absRequire(`prettier`);
// Defer to the real prettier/index.js your application uses
module.exports = absRequire(`prettier/index.js`);

View file

@ -1,7 +1,6 @@
{
"name": "prettier",
"version": "2.8.8-sdk",
"version": "2.8.0-sdk",
"main": "./index.js",
"type": "commonjs",
"bin": "./bin-prettier.js"
"type": "commonjs"
}

View file

@ -1,5 +1,7 @@
nodeLinker: pnp
yarnPath: .yarn/releases/yarn-4.5.1.cjs
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: '@yarnpkg/plugin-interactive-tools'
enableGlobalCache: false
yarnPath: .yarn/releases/yarn-3.6.0.cjs

View file

@ -1,8 +1,7 @@
{
"compilerOptions": {
"module": "es2022",
"target": "ES2022",
"strict": true
"target": "ES2022"
},
"exclude": ["node_modules", "dist"],
"include": ["src", "client", "common"]

View file

@ -10,23 +10,22 @@
"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",
"url": "https://git.f3l.de/dungeonslayers/tickwerk",
"license": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.3.3/LICENSE.md",
"readme": "https://git.f3l.de/dungeonslayers/tickwerk/raw/tag/1.3.3/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"]
}
},
"changelog": "https://git.f3l.de/dungeonslayers/tickwerk/releases/tag/1.3.3",
"version": "1.3.3",
"compatibility": {
"minimum": "10.290",
"verified": "11"
"verified": "10"
},
"esmodules": ["tickwerk.js"],
"styles": ["styles/tickwerk.css"],
"esmodules": [
"tickwerk.js"
],
"styles": [
"styles/tickwerk.css"
],
"languages": [
{
"lang": "en",
@ -40,7 +39,6 @@
}
],
"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"
"download": "https://git.f3l.de/dungeonslayers/tickwerk/releases/download/1.3.3/tickwerk.zip",
"manifestPlusVersion": "1.2.0"
}

View file

@ -2,7 +2,7 @@
"private": true,
"name": "tickwerk",
"description": "A tick based combat system for Foundry Virtual Tabletop",
"version": "1.4.4",
"version": "1.3.3",
"license": "https://git.f3l.de/dungeonslayers/tickwerk#licensing",
"homepage": "https://git.f3l.de/dungeonslayers/tickwerk",
"repository": {
@ -29,30 +29,30 @@
"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)\"",
"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": "19.5.0",
"@commitlint/config-conventional": "19.5.0",
"@guanghechen/rollup-plugin-copy": "6.0.2",
"@swc/core": "1.7.36",
"conventional-changelog-cli": "5.0.0",
"conventional-changelog-conventionalcommits": "8.0.0",
"eslint": "8.57.1",
"eslint-config-prettier": "9.1.0",
"@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.2.0",
"fs-extra": "11.1.1",
"npm-run-all": "4.1.5",
"prettier": "2.8.8",
"rimraf": "6.0.1",
"rollup": "4.24.0",
"rimraf": "5.0.1",
"rollup": "3.23.0",
"rollup-plugin-styles": "4.0.0",
"rollup-plugin-swc3": "0.12.1",
"rollup-plugin-swc3": "0.8.2",
"sass": "1.62.1",
"semver": "7.6.3",
"semver": "7.5.1",
"yargs": "17.7.2"
},
"packageManager": "yarn@4.5.1"
"packageManager": "yarn@3.6.0"
}

View file

@ -112,16 +112,14 @@ const CombatantMixin = (BaseCombatant) => {
* @param {object} data The data of the creation / update
*/
async #updateTiebreakerData(data) {
const waiting = data.flags?.[packageId]?.waiting;
if ('initiative' in data || waiting !== undefined) {
const newInitiative = data.initiative ?? this.initiative;
if ('initiative' in data) {
const combatantsWithSameTickValue =
this.parent?.combatants.filter((combatant) => {
const otherInitiative =
combatant._newInitiative !== undefined ? combatant._newInitiative : combatant.initiative;
return otherInitiative === newInitiative && combatant !== this;
return otherInitiative === data.initiative;
}) ?? [];
const tiebreaker = await this.#getTiebreaker(combatantsWithSameTickValue, waiting);
const tiebreaker = await this.#getTiebreaker(combatantsWithSameTickValue);
foundry.utils.setProperty(data, `flags.${packageId}.tiebreaker`, tiebreaker);
this._newInitiative = data.initiative;
this._newTiebreaker = tiebreaker;
@ -131,12 +129,11 @@ 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, waiting) {
async #getTiebreaker(combatants) {
const getTiebreaker = CONFIG.tickwerk?.getTiebreaker ?? defaultGetTiebreaker;
return getTiebreaker(this, combatants, waiting);
return getTiebreaker(this, combatants);
}
/** @override */
@ -182,14 +179,14 @@ const CombatantMixin = (BaseCombatant) => {
/**
* A function to get a tiebreaker for a combatant
* @typedef {(combatant: TickwerkCombatant, combatants: TickwerkCombatant[], waiting: boolean | undefined) => Promise<number>} GetTiebreaker
* @typedef {(combatant: TickwerkCombatant, combatants: TickwerkCombatant[]) => Promise<number>} GetTiebreaker
*/
/**
* Default implementation to get a tiebreaker for a combatant.
* @type {GetTiebreaker}
*/
export const defaultGetTiebreaker = async (combatant, combatants) => {
const defaultGetTiebreaker = async (combatant, combatants) => {
if (combatants.length === 0) return 0;
const tiebreakers = combatants.map((combatant) => {
return (

View file

@ -14,7 +14,7 @@ export const registerDS4SpecificFunctionality = () => {
};
/** @type {import("../data/documents/combatant").GetTiebreaker} */
const getTiebreaker = async (combatant, combatants, waiting) => {
const getTiebreaker = async (combatant, combatants) => {
if (combatants.length === 0) return 0;
/** @type {number[]} */
@ -26,7 +26,7 @@ const getTiebreaker = async (combatant, combatants, waiting) => {
for (const other of combatants) {
const tiebreaker = other._newTiebreaker ?? other.getFlag(packageId, 'tiebreaker') ?? 0;
if (getInitiative(other) > getInitiative(combatant) || waiting === false) {
if (getInitiative(other) > getInitiative(combatant)) {
lowerBounds.push(tiebreaker);
} else if (getInitiative(other) < getInitiative(combatant)) {
upperBounds.push(tiebreaker);

View file

@ -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_URL;
const repositoryURL = process.env.CI_REPO_LINK;
const forgeURL = process.env.CI_FORGE_URL;
const getManifestUrl = (channel) =>

4725
yarn.lock

File diff suppressed because it is too large Load diff