Compare commits
No commits in common. "main" and "develop" have entirely different histories.
@ -1,9 +0,0 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
15
.eslintrc.js
Normal file
15
.eslintrc.js
Normal file
@ -0,0 +1,15 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true
|
||||
},
|
||||
extends: 'standard',
|
||||
overrides: [
|
||||
],
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module'
|
||||
},
|
||||
rules: {
|
||||
}
|
||||
}
|
||||
146
.gitignore
vendored
146
.gitignore
vendored
@ -1,32 +1,132 @@
|
||||
# SPDX-FileCopyrightText: 2022 Johannes Loher
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
# ---> Node
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vs/
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Node Modules
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
jspm_packages/
|
||||
|
||||
# yarn2
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/releases
|
||||
!.yarn/plugins
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
.pnp.*
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# Local configuration
|
||||
foundryconfig.json
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Distribution files
|
||||
dist
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# ESLint
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Junit results
|
||||
junit.xml
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
swade-mb-helpers.lock
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
{
|
||||
"flags": {
|
||||
"gulpfile": "gulpfile.mjs"
|
||||
}
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2022 Johannes Loher
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
dist
|
||||
package-lock.json
|
||||
.pnp.cjs
|
||||
.pnp.js
|
||||
@ -1,11 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2022 Johannes Loher
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
module.exports = {
|
||||
semi: true,
|
||||
trailingComma: 'all',
|
||||
singleQuote: true,
|
||||
printWidth: 120,
|
||||
tabWidth: 2,
|
||||
};
|
||||
160
CHANGELOG.md
160
CHANGELOG.md
@ -5,166 +5,6 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [4.1.0]
|
||||
|
||||
### Added
|
||||
|
||||
- added suppression of system gang up calculation
|
||||
- added correction for gang up for formation fighter
|
||||
- added swat correction for scale penalty
|
||||
|
||||
### Changed
|
||||
|
||||
- updated roll modifiers for SWADE version 5.1.0
|
||||
- updated pack tactics gang up to use same calculation as system
|
||||
|
||||
### Removed
|
||||
|
||||
- removed roll modifiers handled by the system:
|
||||
- range check
|
||||
- vulnerable target
|
||||
- dodge check
|
||||
|
||||
## [4.0.0]
|
||||
|
||||
### Added
|
||||
|
||||
- Added example morphables and summonables actor compendia.
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated for Foundry v13
|
||||
- Updated for SWADE 5.0
|
||||
- Updated powerEffect application and other dialogs to ApplicationV2
|
||||
- BREAKING CHANGE: removed Portal dependency for summons
|
||||
- BREAKING CHANGE: added Sequencer dependency for summons
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed Darksight effect name.
|
||||
- Summon Ally: Mirror Self improvements - remove changesets and grants from
|
||||
copied items.
|
||||
|
||||
## [3.1.5] 2025-01-27
|
||||
|
||||
### Changed
|
||||
|
||||
- Added flying pace support to Fly power
|
||||
- Added burrowing pace support to Burrow power
|
||||
- Added additional icon choices to the list for maintain effects
|
||||
|
||||
## [3.1.4] 2025-01-26
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed module loding with swade core module and swpf due to fear macro changes
|
||||
- Fixed power effect creation for SWADE system 4.2
|
||||
|
||||
### Changed
|
||||
|
||||
- Clean up of requested roll GM chat card
|
||||
- Make Deflection roll helper modifiers more descriptive (melee, ranged, all)
|
||||
|
||||
## [3.1.3] 2025-01-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- Updated hurry/hinder and sloth/speed power effects to work with
|
||||
`system.pace` for SWADE 4.2 compatibility.
|
||||
|
||||
### Changed
|
||||
|
||||
- updated settings for Blindsense to a more pleasing look.
|
||||
|
||||
## [3.1.2] 2024-08-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- #44: protection effect and other default system effects still had duration
|
||||
when added by the power effect, instead of maintaining their own effect.
|
||||
- Since VAE did away with the collapsable extra description, moved the spell
|
||||
description to the main 'description' field of active effects.
|
||||
|
||||
## [3.1.1] 2024-07-26
|
||||
|
||||
- Added: 'Shape Change Ability' power effect
|
||||
|
||||
## [3.1.0] 2024-07-14
|
||||
|
||||
- v12 compatibility
|
||||
- bugfixes for v12
|
||||
|
||||
## [3.0.2] 2024-06-24
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed bug in which effects would disappear on the target's next turn
|
||||
|
||||
### Added
|
||||
|
||||
- Eidolon summon effect and helper action
|
||||
- Companion "summon" effect and helper action
|
||||
|
||||
## [3.0.1] 2024-06-18
|
||||
|
||||
### Added
|
||||
|
||||
- Added Inquisitor's Judgement power effect
|
||||
|
||||
## [3.0.0] 2024-06-12
|
||||
|
||||
### Added
|
||||
|
||||
- Optional Visual Active Effect integration for power descriptions
|
||||
- Add VAE helper buttons for breaking free from Bound/Entangled
|
||||
- Added Portal dependency
|
||||
|
||||
### Changed
|
||||
|
||||
- Refactor and redo of powers handling
|
||||
- maintained powers
|
||||
- powerpoint calculation
|
||||
- more powers
|
||||
- Refactor of distribution
|
||||
- Code is minified into one file for faster loading
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed warpgate dependency
|
||||
|
||||
## [2.4.3] 2024-04-21
|
||||
|
||||
### Added
|
||||
|
||||
- Added token varient art suggested effect mappings
|
||||
|
||||
### Changed
|
||||
|
||||
- Added elevation component to distance calculations for gang up
|
||||
- Added check for incapacitated or defeated tokens to gang up check
|
||||
- Minor cosmetic change to 'Draw from Action Deck' macro
|
||||
|
||||
## [2.4.2] 2024-02-25
|
||||
|
||||
### Added
|
||||
|
||||
- Added Macro Manager macro for all Power Effects
|
||||
- Added Macro Manager macro for all helper macros
|
||||
- Added Draw from Action Deck macro
|
||||
- Added Shuffle Action Deck macro
|
||||
|
||||
## [2.4.1] 2024-02-13
|
||||
|
||||
### Added
|
||||
|
||||
- Added support for SWPF Smite's Spiritual Weapon (from the APG)
|
||||
|
||||
## [2.4.0] 2024-02-11
|
||||
|
||||
### Added
|
||||
|
||||
- Added Monk's Active Tile Trigger versions of the request roll macros.
|
||||
|
||||
## [2.3.5] 2024-01-30
|
||||
|
||||
### Changed
|
||||
|
||||
73
README.md
73
README.md
@ -3,76 +3,3 @@
|
||||
This is a series of helper macros and other helpers to help run SWADE and
|
||||
Savage Pathfinder games with some minimal help remembering token state, without
|
||||
going overboard on the automation.
|
||||
|
||||
## Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
In order to build this module, recent versions of `node` and `npm` are
|
||||
required. Most likely, using `yarn` also works, but only `npm` 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
|
||||
|
||||
```
|
||||
nvm install
|
||||
```
|
||||
|
||||
in the project's root directory.
|
||||
|
||||
You also need to install the project's dependencies. To do so, run
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Building
|
||||
|
||||
You can build the project by running
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Alternatively, you can run
|
||||
|
||||
```
|
||||
npm run build:watch
|
||||
```
|
||||
|
||||
to watch for changes and automatically build as necessary.
|
||||
|
||||
### Linking the built project to Foundry VTT
|
||||
|
||||
In order to provide a fluent development experience, it is recommended to link
|
||||
the built module to your local Foundry VTT installation's data folder. In
|
||||
order to do so, first add a file called `foundryconfig.json` to the project root
|
||||
with the following content:
|
||||
|
||||
```
|
||||
{
|
||||
"dataPath": ["/absolute/path/to/your/FoundryVTT"]
|
||||
}
|
||||
```
|
||||
|
||||
(if you are using Windows, make sure to use `\` as a path separator instead of
|
||||
`/`)
|
||||
|
||||
Then run
|
||||
|
||||
```
|
||||
npm run link-project
|
||||
```
|
||||
|
||||
On Windows, creating symlinks requires administrator privileges, so
|
||||
unfortunately you need to run the above command in an administrator terminal for
|
||||
it to work.
|
||||
|
||||
You can also link to multiple data folders by specifying multiple paths in the
|
||||
`dataPath` array.
|
||||
|
||||
## Licensing
|
||||
|
||||
This project is being developed under the terms of the
|
||||
[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT] for Foundry Virtual Tabletop.
|
||||
|
||||
[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/
|
||||
|
||||
660
config/token-variants-global-mappings.json
Executable file
660
config/token-variants-global-mappings.json
Executable file
@ -0,0 +1,660 @@
|
||||
{
|
||||
"globalMappings": [
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 30000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/Item/GlintMany01_01_Regular_Yellow_200x200.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0.38,
|
||||
"scaleX": 0.4,
|
||||
"scaleY": 0.4,
|
||||
"angle": 0,
|
||||
"filter": "DropShadowFilter",
|
||||
"filterOptions": {
|
||||
"rotation": 45,
|
||||
"distance": 7,
|
||||
"color": 0,
|
||||
"alpha": 0.84,
|
||||
"shadowOnly": false,
|
||||
"blur": 2,
|
||||
"quality": 0
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "Shaken",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "mwFtNKpD"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Shaken",
|
||||
"expression": "Shaken",
|
||||
"id": "mwFtNKpD"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": true,
|
||||
"duration": 30000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/Particles/ParticlesInward02_04_Regular_GreenYellow_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 1.5,
|
||||
"scaleY": 1.5,
|
||||
"angle": 0,
|
||||
"filter": "DropShadowFilter",
|
||||
"filterOptions": {
|
||||
"rotation": 45,
|
||||
"distance": 7,
|
||||
"color": 0,
|
||||
"alpha": 0.84,
|
||||
"shadowOnly": false,
|
||||
"blur": 2,
|
||||
"quality": 0
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "toTYr3DQ"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Distracted",
|
||||
"expression": "Distracted",
|
||||
"id": "toTYr3DQ"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5200,
|
||||
"clockwise": false
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/Marker/MarkerShieldCracked_02_Regular_Purple_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 1.5,
|
||||
"scaleY": 1.5,
|
||||
"angle": 0,
|
||||
"filter": "OutlineFilter",
|
||||
"filterOptions": {
|
||||
"thickness": 1,
|
||||
"color": 0,
|
||||
"quality": 0.1
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "J4GrRaxL"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Vulnerable",
|
||||
"expression": "Vulnerable",
|
||||
"id": "J4GrRaxL"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/UI/IconStun_01_Regular_Purple_200x200.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 0.77,
|
||||
"scaleY": 0.77,
|
||||
"angle": 0,
|
||||
"filter": "OutlineFilter",
|
||||
"filterOptions": {
|
||||
"thickness": 1,
|
||||
"color": 0,
|
||||
"quality": 0.1
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "nOfPMsQp"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Stunned",
|
||||
"expression": "Stunned",
|
||||
"id": "nOfPMsQp"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/1st_Level/Entangle/Entangle_01_Green_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 1,
|
||||
"scaleY": 1,
|
||||
"angle": 0,
|
||||
"filter": "DropShadowFilter",
|
||||
"filterOptions": {
|
||||
"rotation": 45,
|
||||
"distance": 2,
|
||||
"color": 2367281,
|
||||
"alpha": 0.84,
|
||||
"shadowOnly": false,
|
||||
"blur": 2,
|
||||
"quality": 0
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "rrdhKai4"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Entangled",
|
||||
"expression": "Entangled",
|
||||
"id": "rrdhKai4"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/Marker/MarkerChainStandard01_01_Regular_Red_Loop_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 1.75,
|
||||
"scaleY": 1.75,
|
||||
"angle": 0,
|
||||
"filter": "DropShadowFilter",
|
||||
"filterOptions": {
|
||||
"rotation": 45,
|
||||
"distance": 2,
|
||||
"color": 2367281,
|
||||
"alpha": 0.84,
|
||||
"shadowOnly": false,
|
||||
"blur": 2,
|
||||
"quality": 0
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "5RYi2X9W"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Bound",
|
||||
"expression": "Bound",
|
||||
"id": "5RYi2X9W"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {
|
||||
"tv_script": {
|
||||
"onApply": "",
|
||||
"onRemove": "",
|
||||
"tmfxPreset": "dropshadow"
|
||||
}
|
||||
},
|
||||
"overlay": false,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"id": "KtequnXd"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Flying",
|
||||
"expression": "Flying",
|
||||
"id": "KtequnXd"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {
|
||||
"tv_script": {
|
||||
"onApply": "",
|
||||
"onRemove": "",
|
||||
"tmfxPreset": "glow"
|
||||
}
|
||||
},
|
||||
"overlay": false,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"id": "k4boMPSb"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Conviction",
|
||||
"expression": "Conviction",
|
||||
"id": "k4boMPSb"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {
|
||||
"light": {
|
||||
"dim": 0.25,
|
||||
"bright": 0,
|
||||
"color": "#1c71d8",
|
||||
"alpha": 0.4,
|
||||
"animation": {
|
||||
"type": "sunburst",
|
||||
"speed": 3,
|
||||
"intensity": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": true,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Cantrip/Dancing_Lights/DancingLights_01_Yellow_200x200.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0.52,
|
||||
"scaleX": 0.41,
|
||||
"scaleY": 0.41,
|
||||
"angle": 0,
|
||||
"filter": "NONE",
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "eO68BGDl"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Glow",
|
||||
"expression": "Glow",
|
||||
"id": "eO68BGDl"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {
|
||||
"texture": {
|
||||
"tint": "#c0bfbc"
|
||||
},
|
||||
"tv_script": {
|
||||
"onApply": "",
|
||||
"onRemove": "",
|
||||
"tmfxPreset": "smoke"
|
||||
}
|
||||
},
|
||||
"overlay": false,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"id": "BP0Xx8wD"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Shroud",
|
||||
"expression": "Shroud",
|
||||
"id": "BP0Xx8wD"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/Generic/Marker/MarkerShield_03_Regular_Green_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 2,
|
||||
"scaleY": 2,
|
||||
"angle": 0,
|
||||
"filter": "OutlineFilter",
|
||||
"filterOptions": {
|
||||
"thickness": 1,
|
||||
"color": 0,
|
||||
"quality": 0.1
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "gRwsZcZK"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Deflection (melee) || Deflection (range) || Deflection (raise)",
|
||||
"expression": "Deflection (melee) || Deflection (range) || Deflection (raise)",
|
||||
"id": "gRwsZcZK"
|
||||
},
|
||||
{
|
||||
"imgName": "",
|
||||
"imgSrc": "",
|
||||
"priority": 50,
|
||||
"config": {},
|
||||
"overlay": true,
|
||||
"alwaysOn": false,
|
||||
"overlayConfig": {
|
||||
"underlay": false,
|
||||
"bottom": false,
|
||||
"top": false,
|
||||
"inheritTint": false,
|
||||
"linkRotation": true,
|
||||
"animation": {
|
||||
"relative": false,
|
||||
"rotate": false,
|
||||
"duration": 5000,
|
||||
"clockwise": true
|
||||
},
|
||||
"linkMirror": true,
|
||||
"linkScale": true,
|
||||
"linkOpacity": false,
|
||||
"loop": true,
|
||||
"playOnce": false,
|
||||
"img": "modules/JB2A_DnD5e/Library/1st_Level/Shield/Shield_01_Regular_Blue_Loop_400x400.webm",
|
||||
"alpha": 1,
|
||||
"tint": "",
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"scaleX": 1.6,
|
||||
"scaleY": 1.6,
|
||||
"angle": 0,
|
||||
"filter": "OutlineFilter",
|
||||
"filterOptions": {
|
||||
"thickness": 2.9,
|
||||
"color": 0,
|
||||
"quality": 0.1
|
||||
},
|
||||
"alwaysVisible": false,
|
||||
"limitedUsers": [],
|
||||
"limitOnHover": false,
|
||||
"limitOnControl": false,
|
||||
"text": {
|
||||
"text": "",
|
||||
"fontFamily": "Signika",
|
||||
"fontSize": 36,
|
||||
"letterSpacing": 0,
|
||||
"fill": "#FFFFFF",
|
||||
"dropShadow": "true",
|
||||
"strokeThickness": 1,
|
||||
"stroke": "#111111",
|
||||
"curve": {
|
||||
"radius": 0,
|
||||
"invert": null
|
||||
}
|
||||
},
|
||||
"id": "1po9hq1m"
|
||||
},
|
||||
"targetActors": null,
|
||||
"label": "Protection",
|
||||
"expression": "Protection",
|
||||
"id": "1po9hq1m"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
import globals from "globals"
|
||||
import js from "@eslint/js";
|
||||
import typhonJs from "@typhonjs-fvtt/eslint-config-foundry.js"
|
||||
export default [
|
||||
js.configs.recommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...typhonJs.globals,
|
||||
}
|
||||
},
|
||||
ignores: ['dist/*', './macros/*'],
|
||||
rules: {
|
||||
'no-unused-vars': 'warn',
|
||||
'no-undef': 'error',
|
||||
},
|
||||
}
|
||||
];
|
||||
12
fvtt-pack.sh
12
fvtt-pack.sh
@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
curdir=$(realpath $(dirname $0))
|
||||
package=$(basename ${curdir})
|
||||
|
||||
fvtt package workon ${package}
|
||||
for p in ${curdir}/dist/swade-mb-helpers/packs/*; do
|
||||
package=$(basename $p)
|
||||
rm $p/*
|
||||
fvtt package pack -n ${package} --inputDirectory ${curdir}/src/packsrc/${package} --clean
|
||||
done
|
||||
rsync -rpa ${curdir}/dist/swade-mb-helpers/packs/ ${curdir}/src/packs --delete
|
||||
@ -1,11 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
curdir=$(realpath $(dirname $0))
|
||||
package=$(basename ${curdir})
|
||||
|
||||
fvtt package workon ${package}
|
||||
for p in ${curdir}/dist/swade-mb-helpers/packs/*; do
|
||||
package=$(basename $p)
|
||||
mkdir -p ${curdir}/src/packsrc/${package}
|
||||
fvtt package unpack -n ${package} --outputDirectory ${curdir}/src/packsrc/${package}
|
||||
done
|
||||
183
gulpfile.mjs
183
gulpfile.mjs
@ -1,183 +0,0 @@
|
||||
import fs from 'fs-extra';
|
||||
import gulp from 'gulp';
|
||||
import sass from 'gulp-dart-sass';
|
||||
import sourcemaps from 'gulp-sourcemaps';
|
||||
import path from 'node:path';
|
||||
import buffer from 'vinyl-buffer';
|
||||
import source from 'vinyl-source-stream';
|
||||
import yargs from 'yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
|
||||
import rollupStream from '@rollup/stream';
|
||||
|
||||
import rollupConfig from './rollup.config.mjs';
|
||||
|
||||
/********************/
|
||||
/* CONFIGURATION */
|
||||
/********************/
|
||||
|
||||
const packageId = 'swade-mb-helpers';
|
||||
const sourceDirectory = './src';
|
||||
const distDirectory = './dist/swade-mb-helpers';
|
||||
const stylesDirectory = `${sourceDirectory}/styles`;
|
||||
const stylesExtension = 'scss';
|
||||
const sourceFileExtension = 'js';
|
||||
const staticFiles = ['assets', 'config', 'fonts', 'lang', 'templates'];
|
||||
const runtimeStaticFiles = ['packs', 'module.json'];
|
||||
|
||||
/********************/
|
||||
/* BUILD */
|
||||
/********************/
|
||||
|
||||
let cache;
|
||||
|
||||
/**
|
||||
* Build the distributable JavaScript code
|
||||
*/
|
||||
function buildCode() {
|
||||
return rollupStream({ ...rollupConfig(), cache })
|
||||
.on('bundle', (bundle) => {
|
||||
cache = bundle;
|
||||
})
|
||||
.pipe(source(`${packageId}.js`))
|
||||
.pipe(buffer())
|
||||
.pipe(sourcemaps.init({ loadMaps: true }))
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(gulp.dest(`${distDirectory}/module`));
|
||||
}
|
||||
|
||||
/**
|
||||
* Build style sheets
|
||||
*/
|
||||
function buildStyles() {
|
||||
return gulp
|
||||
.src(`${stylesDirectory}/${packageId}.${stylesExtension}`)
|
||||
.pipe(sass().on('error', sass.logError))
|
||||
.pipe(gulp.dest(`${distDirectory}/styles`));
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy static files
|
||||
*/
|
||||
async function copyFiles() {
|
||||
for (const file of staticFiles) {
|
||||
if (fs.existsSync(`${sourceDirectory}/${file}`)) {
|
||||
await fs.copy(`${sourceDirectory}/${file}`, `${distDirectory}/${file}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy runtime files
|
||||
*/
|
||||
async function copyRuntimeFiles() {
|
||||
for (const file of runtimeStaticFiles) {
|
||||
if (fs.existsSync(`${sourceDirectory}/${file}`)) {
|
||||
await fs.copy(`${sourceDirectory}/${file}`, `${distDirectory}/${file}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch for changes for each build step
|
||||
*/
|
||||
export function watch() {
|
||||
gulp.watch(`${sourceDirectory}/**/*.${sourceFileExtension}`, { ignoreInitial: false }, buildCode);
|
||||
gulp.watch(`${stylesDirectory}/**/*.${stylesExtension}`, { ignoreInitial: false }, buildStyles);
|
||||
gulp.watch(
|
||||
staticFiles.map((file) => `${sourceDirectory}/${file}`),
|
||||
{ ignoreInitial: false },
|
||||
copyFiles,
|
||||
);
|
||||
}
|
||||
|
||||
export const build = gulp.series(clean, gulp.parallel(buildCode, buildStyles, copyRuntimeFiles, copyFiles));
|
||||
|
||||
/********************/
|
||||
/* CLEAN */
|
||||
/********************/
|
||||
|
||||
/**
|
||||
* Remove built files from `dist` folder while ignoring source files
|
||||
*/
|
||||
export async function clean() {
|
||||
const files = [...runtimeStaticFiles, 'module'];
|
||||
|
||||
if (fs.existsSync(`${stylesDirectory}/${packageId}.${stylesExtension}`)) {
|
||||
files.push('styles');
|
||||
}
|
||||
|
||||
console.log(' ', 'Files to clean:');
|
||||
console.log(' ', files.join('\n '));
|
||||
|
||||
for (const filePath of files) {
|
||||
await fs.remove(`${distDirectory}/${filePath}`);
|
||||
}
|
||||
}
|
||||
|
||||
/********************/
|
||||
/* LINK */
|
||||
/********************/
|
||||
|
||||
/**
|
||||
* Get the data paths of Foundry VTT based on what is configured in `foundryconfig.json`
|
||||
*/
|
||||
function getDataPaths() {
|
||||
const config = fs.readJSONSync('foundryconfig.json');
|
||||
const dataPath = config?.dataPath;
|
||||
|
||||
if (dataPath) {
|
||||
const dataPaths = Array.isArray(dataPath) ? dataPath : [dataPath];
|
||||
|
||||
return dataPaths.map((dataPath) => {
|
||||
if (typeof dataPath !== 'string') {
|
||||
throw new Error(
|
||||
`Property dataPath in foundryconfig.json is expected to be a string or an array of strings, but found ${dataPath}`,
|
||||
);
|
||||
}
|
||||
if (!fs.existsSync(path.resolve(dataPath))) {
|
||||
throw new Error(`The dataPath ${dataPath} does not exist on the file system`);
|
||||
}
|
||||
return path.resolve(dataPath);
|
||||
});
|
||||
} else {
|
||||
throw new Error('No dataPath defined in foundryconfig.json');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Link build to User Data folder
|
||||
*/
|
||||
export async function link() {
|
||||
let destinationDirectory;
|
||||
if (fs.existsSync(path.resolve(sourceDirectory, 'module.json'))) {
|
||||
destinationDirectory = 'modules';
|
||||
} else {
|
||||
throw new Error('Could not find module.json');
|
||||
}
|
||||
|
||||
const linkDirectories = getDataPaths().map((dataPath) =>
|
||||
path.resolve(dataPath, 'Data', destinationDirectory, packageId),
|
||||
);
|
||||
|
||||
const argv = yargs(hideBin(process.argv)).option('clean', {
|
||||
alias: 'c',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
}).argv;
|
||||
const clean = argv.c;
|
||||
|
||||
for (const linkDirectory of linkDirectories) {
|
||||
if (clean) {
|
||||
console.log(`Removing build in ${linkDirectory}.`);
|
||||
|
||||
await fs.remove(linkDirectory);
|
||||
} else if (!fs.existsSync(linkDirectory)) {
|
||||
console.log(`Linking dist to ${linkDirectory}.`);
|
||||
await fs.ensureDir(path.resolve(linkDirectory, '..'));
|
||||
await fs.symlink(path.resolve(distDirectory), linkDirectory);
|
||||
} else {
|
||||
console.log(`Skipped linking to ${linkDirectory}, as it already exists.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
const tokens = canvas.tokens.controlled;
|
||||
const actors = tokens.map((t) => t.actor);
|
||||
const EFFECT_OBJECT = {
|
||||
name: 'Effect',
|
||||
type: 'macro',
|
||||
dice: null,
|
||||
resourcesUsed: null,
|
||||
modifier: '',
|
||||
override: '',
|
||||
uuid: 'Compendium.swade-mb-helpers.helper-macros.Macro.AjuA11hQ48UJNwlH',
|
||||
macroActor: 'self',
|
||||
isHeavyWeapon: false,
|
||||
};
|
||||
for (const actor of actors) {
|
||||
const updates = [];
|
||||
for (const power of actor.items.filter((i) => i.type === 'power')) {
|
||||
if (Object.values(power.system.actions.additional).find((action) => action.name === 'Effect')) {
|
||||
continue;
|
||||
}
|
||||
const _id = power.id;
|
||||
const additional = foundry.utils.deepClone(power.system.actions.additional);
|
||||
additional[foundry.utils.randomID(8)] = foundry.utils.deepClone(EFFECT_OBJECT);
|
||||
updates.push({ _id, 'system.actions.additional': additional });
|
||||
}
|
||||
if (updates.length > 0) {
|
||||
actor.updateEmbeddedDocuments('Item', updates);
|
||||
}
|
||||
}
|
||||
@ -1,33 +1,33 @@
|
||||
let tokens = [];
|
||||
let tokens = []
|
||||
if (canvas.tokens.controlled.length > 0) {
|
||||
tokens = canvas.tokens.controlled;
|
||||
tokens = canvas.tokens.controlled
|
||||
}
|
||||
if (tokens.length > 0) {
|
||||
main(tokens);
|
||||
main(tokens)
|
||||
} else {
|
||||
ui.notifications.error('Please select or target a token');
|
||||
ui.notifications.error('Please select or target a token')
|
||||
}
|
||||
|
||||
async function main(tokens) {
|
||||
const currencies = ['Copper', 'Silver', 'Gold', 'Platinum'];
|
||||
let template = '<div><table><thead><tr><th>Actor</th><th>Currency</th></tr></thead><tbody>';
|
||||
async function main (tokens) {
|
||||
const currencies = ['Copper', 'Silver', 'Gold', 'Platinum']
|
||||
let template = '<div><table><thead><tr><th>Actor</th><th>Currency</th></tr></thead><tbody>'
|
||||
const fmtOptions = {
|
||||
minimumIntegerDigits: 1,
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
};
|
||||
const fmt = Intl.NumberFormat('en-US', fmtOptions);
|
||||
maximumFractionDigits: 2
|
||||
}
|
||||
const fmt = Intl.NumberFormat('en-US', fmtOptions)
|
||||
for (const token of tokens) {
|
||||
const actor = token.actor;
|
||||
let total = 0;
|
||||
for (const item of actor.items.filter((i) => currencies.indexOf(i.name) > -1)) {
|
||||
total += item.system.price * item.system.quantity;
|
||||
const actor = token.actor
|
||||
let total = 0
|
||||
for (const item of actor.items.filter(i => currencies.indexOf(i.name) > -1)) {
|
||||
total += item.system.price * item.system.quantity
|
||||
}
|
||||
template += `<tr><td>${actor.name}</td><td>${fmt.format(total)}</td></tr>`;
|
||||
template += `<tr><td>${actor.name}</td><td>${fmt.format::(total)}</td></tr>`
|
||||
}
|
||||
template += '</thead></tbody>';
|
||||
foundry.applications.api.DialogV2.prompt({
|
||||
window: { title: 'Currency Totals' },
|
||||
content: template,
|
||||
});
|
||||
template += '</thead></tbody>'
|
||||
Dialog.prompt({
|
||||
title: 'Currency Totals',
|
||||
content: template
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
game.modules.get('swade-mb-helpers').api.powerEffectsMenu({
|
||||
token,
|
||||
targets: game.user.targets,
|
||||
});
|
||||
@ -1,5 +1,5 @@
|
||||
new foundry.applications.api.DialogV2({
|
||||
window: { title: "Damage Roll Configuration" },
|
||||
new Dialog({
|
||||
title: 'Damage Roll Configuration',
|
||||
content: `
|
||||
<form>
|
||||
<div class="form-group">
|
||||
@ -16,28 +16,24 @@ new foundry.applications.api.DialogV2({
|
||||
</div>
|
||||
</form>
|
||||
`,
|
||||
buttons: [
|
||||
{
|
||||
action: "ok",
|
||||
label: "Roll Damage",
|
||||
callback: (event, button, dialog) => {
|
||||
const form = new foundry.applications.ux.FormDataExtended(button.form);
|
||||
console.log(form)
|
||||
const damageRoll = form.object.damageRoll;
|
||||
let flavor = form.object.flavor;
|
||||
const ap = parseInt(form.object.ap) || 0;
|
||||
const options = {};
|
||||
buttons: {
|
||||
ok: {
|
||||
label: 'Roll Damage',
|
||||
callback: (html) => {
|
||||
const damageRoll = html.find('input[name="damageRoll"]').val()
|
||||
let flavor = html.find('input[name="flavor"]').val()
|
||||
const ap = parseInt(html.find('input[name="ap"]').val()) || 0
|
||||
const options = {}
|
||||
if (ap > 0) {
|
||||
flavor = `${flavor ? flavor + " - " : ""}AP: ${ap}`
|
||||
options.ap = ap;
|
||||
flavor = `${flavor ? flavor + ' - ' : ''}AP: ${ap}`
|
||||
options.ap = ap
|
||||
}
|
||||
// Perform the damage roll and send the message
|
||||
new CONFIG.Dice.DamageRoll(damageRoll, null, options).toMessage({ flavor });
|
||||
new CONFIG.Dice.DamageRoll(damageRoll, null, options).toMessage({ flavor })
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
action: "cancel",
|
||||
label: "Cancel",
|
||||
},
|
||||
],
|
||||
}).render(true);
|
||||
cancel: {
|
||||
label: 'Cancel'
|
||||
}
|
||||
}
|
||||
}).render(true)
|
||||
|
||||
@ -1,42 +1,39 @@
|
||||
const requestFearRollFromTokens = game.modules.get('swade-mb-helpers').api.requestFearRollFromTokens;
|
||||
const requestFearRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens
|
||||
|
||||
async function main() {
|
||||
let tokens = Array.from(game.user.targets);
|
||||
async function main () {
|
||||
let tokens = Array.from(game.user.targets)
|
||||
if (tokens.length < 1) {
|
||||
tokens = canvas.tokens.controlled;
|
||||
tokens = canvas.tokens.controlled
|
||||
}
|
||||
if (tokens.length < 1) {
|
||||
ui.notifications.error('Please target or select some tokens');
|
||||
return;
|
||||
ui.notifications.error('Please target or select some tokens')
|
||||
return
|
||||
}
|
||||
|
||||
new foundry.applications.api.DialogV2({
|
||||
window: { title: 'Request Fear roll...' },
|
||||
content: `
|
||||
<form>
|
||||
<p>Requesting Fear roll from ${tokens.map((t) => t.name).join(', ')}.</p>
|
||||
<div class="form-group">
|
||||
<label>Fear Check Penalty
|
||||
<input type="number" value="0" name="fear">
|
||||
</label>
|
||||
</div>
|
||||
</form>`,
|
||||
buttons: [
|
||||
{
|
||||
action: "submit",
|
||||
label: 'Request Roll',
|
||||
callback: (event, button, dialog) => {
|
||||
formdata = new foundry.applications.ux.FormDataExtended(button.form).object
|
||||
const fear = parseInt(formdata.fear) || 0;
|
||||
const options = { targetNumber: 4, fear };
|
||||
requestFearRollFromTokens(tokens, options);
|
||||
},
|
||||
},
|
||||
{
|
||||
action: "cancel", label: 'Cancel',
|
||||
},
|
||||
const menuData = {
|
||||
inputs: [
|
||||
{ type: 'info', label: `Requesting Fear roll from ${tokens.map(t => t.name).join(', ')}` },
|
||||
{ type: 'number', label: 'Fear Check Penalty', options: 0 }
|
||||
],
|
||||
}).render(true);
|
||||
buttons: [
|
||||
{ label: 'Request roll', value: 'ok', default: true },
|
||||
{ label: 'Cancel', value: 'cancel' }
|
||||
]
|
||||
}
|
||||
const menuConfig = {
|
||||
title: 'Request Fear roll...'
|
||||
}
|
||||
const result = await warpgate.menu(menuData, menuConfig)
|
||||
|
||||
if (result.buttons !== 'ok') {
|
||||
return
|
||||
}
|
||||
console.log(result)
|
||||
const fear = result.inputs[1] || 0
|
||||
const targetNumber = 4
|
||||
const options = { targetNumber, fear }
|
||||
|
||||
requestFearRollFromTokens(tokens, options)
|
||||
}
|
||||
|
||||
main();
|
||||
main()
|
||||
|
||||
@ -1,95 +1,72 @@
|
||||
const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens;
|
||||
const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens
|
||||
|
||||
async function main() {
|
||||
let tokens = Array.from(game.user.targets);
|
||||
async function main () {
|
||||
let tokens = Array.from(game.user.targets)
|
||||
if (tokens.length < 1) {
|
||||
tokens = canvas.tokens.controlled;
|
||||
tokens = canvas.tokens.controlled
|
||||
}
|
||||
if (tokens.length < 1) {
|
||||
ui.notifications.error('Please target or select some tokens');
|
||||
return;
|
||||
ui.notifications.error('Please target or select some tokens')
|
||||
return
|
||||
}
|
||||
|
||||
const attributes = ['Agility', 'Smarts', 'Spirit', 'Strength', 'Vigor'];
|
||||
const skillSet = new Set();
|
||||
const menuData = {
|
||||
inputs: [
|
||||
{ type: 'info', label: `Requesting roll from ${tokens.map(t => t.name).join(', ')}` },
|
||||
{
|
||||
type: 'select',
|
||||
label: 'Trait to roll',
|
||||
options: []
|
||||
},
|
||||
{ type: 'number', label: 'Roll Modifier', options: 0 },
|
||||
{ type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' },
|
||||
{ type: 'number', label: 'Target Number', options: 4 }
|
||||
],
|
||||
buttons: [
|
||||
{ label: 'Request roll', value: 'ok', default: true },
|
||||
{ label: 'Cancel', value: 'cancel' }
|
||||
]
|
||||
}
|
||||
const menuConfig = {
|
||||
title: 'Request roll...'
|
||||
}
|
||||
for (const attribute of ['Agility', 'Smarts', 'Spirit', 'Strength', 'Vigor']) {
|
||||
menuData.inputs[1].options.push(
|
||||
{ html: `Attribute | ${attribute}`, value: `a|${attribute}` }
|
||||
)
|
||||
}
|
||||
const skillSet = new Set()
|
||||
for (const token of tokens) {
|
||||
const tokenSkills = token.actor.items.filter(
|
||||
(i) => i.type === 'skill' && !['Untrained', 'Untrained Attempt'].includes(i.name),
|
||||
);
|
||||
for (const skill of tokenSkills) {
|
||||
skillSet.add(skill.name);
|
||||
const skills = token.actor.items.filter(i => i.type === 'skill' &&
|
||||
!['Untrained', 'Unskilled Attempt'].includes(i.name))
|
||||
for (const skill of skills) {
|
||||
skillSet.add(skill.name)
|
||||
}
|
||||
}
|
||||
const attributeOptions = attributes
|
||||
.map(
|
||||
(a) => `
|
||||
<option ${a === 'Agility' ? 'selected ' : ''} value="a|${a}">${a}</option>`,
|
||||
)
|
||||
.join('');
|
||||
const skillOptions = Array.from(skillSet)
|
||||
.sort()
|
||||
.map(
|
||||
(s) => `
|
||||
<option value="s|${s}">${s}</option>`,
|
||||
)
|
||||
.join('');
|
||||
const content = `
|
||||
<form>
|
||||
<p>Requesting roll from ${tokens.map((t) => t.name).join(', ')}.</p>
|
||||
<div class="form-group">
|
||||
<label for="trait">Trait to roll</label>
|
||||
<select name="trait">
|
||||
<optgroup label="Attributes">${attributeOptions}</optgroup>
|
||||
<optgroup label="Skills">
|
||||
${skillOptions}
|
||||
<option value="s|NOSKILL">Untrained</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="mod">Roll Modifier:</label>
|
||||
<input type="number" value="0" name="mod">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="modDesc">Roll Modifier Description:</label>
|
||||
<input type="text" value="Roll Modifier" name="modDesc">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="tn">Target Number</label>
|
||||
<input type="number" value="4" name="tn">
|
||||
</div>
|
||||
</form>
|
||||
`;
|
||||
const buttons = [
|
||||
{
|
||||
action: "submit",
|
||||
label: 'Request Roll',
|
||||
callback: (event, button, dialog) => {
|
||||
const form = button.form;
|
||||
const formDataObject = new foundry.applications.ux.FormDataExtended(form).object;
|
||||
console.log(formDataObject);
|
||||
const rollMod = parseInt(formDataObject.mod);
|
||||
const rollModDesc = formDataObject.modDesc;
|
||||
const rollParts = formDataObject.trait.split('|');
|
||||
const rollType = rollParts[0] === 'a' ? 'attribute' : 'skill';
|
||||
const rollDesc = rollParts[1];
|
||||
const targetNumber = parseInt(formDataObject.tn);
|
||||
const options = { targetNumber };
|
||||
for (const skill of Array.from(skillSet).sort()) {
|
||||
menuData.inputs[1].options.push(
|
||||
{ html: `Skill | ${skill}`, value: `s|${skill}` })
|
||||
}
|
||||
menuData.inputs[1].options.push(
|
||||
{ html: 'Skill | Untrained', value: 's|NOSKILL' })
|
||||
const result = await warpgate.menu(menuData, menuConfig)
|
||||
|
||||
if (result.buttons !== 'ok') {
|
||||
return
|
||||
}
|
||||
console.log(result)
|
||||
const rollMod = result.inputs[2]
|
||||
const rollModDesc = result.inputs[3]
|
||||
const rollParts = result.inputs[1].split('|')
|
||||
const rollType = (rollParts[0] === 'a' ? 'attribute' : 'skill')
|
||||
const rollDesc = rollParts[1]
|
||||
const targetNumber = result.inputs[4] || 4
|
||||
const options = { targetNumber }
|
||||
if (rollMod !== 0) {
|
||||
options.mods = [{ label: rollModDesc, value: rollMod }];
|
||||
options.mods = [{ label: rollModDesc, value: rollMod }]
|
||||
}
|
||||
requestRollFromTokens(tokens, rollType, rollDesc, options);
|
||||
},
|
||||
},
|
||||
{
|
||||
action: "cancel", label: 'Cancel',
|
||||
},
|
||||
];
|
||||
new foundry.applications.api.DialogV2({
|
||||
window { title: 'Request roll' },
|
||||
content,
|
||||
buttons,
|
||||
}).render(true);
|
||||
|
||||
requestRollFromTokens(tokens, rollType, rollDesc, options)
|
||||
}
|
||||
|
||||
main();
|
||||
main()
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
// This will request rolls from the tile's current collection, assuming
|
||||
// that collection is tokens.
|
||||
// call this from MATT's Run Macro with the following arguments,
|
||||
// 1. roll type: "attribute" or "skill" (in double quotes)
|
||||
// 2. roll description: attribute or skill name as you want
|
||||
// it to appear in the request title (in double quotes), eg "Strength"
|
||||
// or "Common Knowledge"
|
||||
// 3... paired arguments, each pair a modifier and a description,
|
||||
// eg: '-2 "Noxious Fog" +1 "Bless Aura"'
|
||||
// so an entire arguments box in MATT may look like this:
|
||||
// "skill" "Common Knowledge" -2 "Ugly Wallpaper" +1 "Rousing Speech"
|
||||
|
||||
const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens
|
||||
const tokens = arguments[0].value.tokens.map(t => canvas.tokens.get(t.id))
|
||||
const rolldata = args
|
||||
|
||||
async function main () {
|
||||
if (tokens.length < 1) {
|
||||
return
|
||||
}
|
||||
const rollType = rolldata.shift()
|
||||
const rollDesc = rolldata.shift()
|
||||
const options = { targetNumber: 4 }
|
||||
const mods = []
|
||||
while (rolldata.length > 0) {
|
||||
const value = Number(rolldata.shift())
|
||||
const label = rolldata.shift()
|
||||
mods.push({ label, value })
|
||||
}
|
||||
if (mods.length > 0) {
|
||||
options.mods = mods
|
||||
}
|
||||
|
||||
requestRollFromTokens(tokens, rollType, rollDesc, options)
|
||||
}
|
||||
|
||||
main()
|
||||
@ -1,156 +1,123 @@
|
||||
const argBright = typeof args === 'undefined' ? null : args.length > 0 ? args[0] : null;
|
||||
const argBright = typeof args === 'undefined' ? null : args.length > 0 ? args[0] : null
|
||||
// argument can be one of 'bright', 'dim', 'dark', 'pitchdark'. Other values
|
||||
// will guess based on scene darkness
|
||||
const BRIGHT_LEVELS = ['bright', 'dim', 'dark', 'pitchdark'];
|
||||
const BRIGHT_LEVELS = ['bright', 'dim', 'dark', 'pitchdark']
|
||||
const THRESHOLDS = {
|
||||
dim: 0.4,
|
||||
dark: 0.6,
|
||||
pitchdark: 0.8,
|
||||
};
|
||||
pitchdark: 0.8
|
||||
}
|
||||
const RANGES = {
|
||||
basic: {
|
||||
bright: 25,
|
||||
dim: 25,
|
||||
dark: 10,
|
||||
pitchdark: 0,
|
||||
pitchdark: 0
|
||||
},
|
||||
lowlight: {
|
||||
bright: 25,
|
||||
dim: 25,
|
||||
dark: 10,
|
||||
pitchdark: 0,
|
||||
pitchdark: 0
|
||||
},
|
||||
darkvision: {
|
||||
bright: 25,
|
||||
dim: 25,
|
||||
dark: 10,
|
||||
pitchdark: 10,
|
||||
pitchdark: 10
|
||||
},
|
||||
nightvision: {
|
||||
bright: 200,
|
||||
dim: 200,
|
||||
dark: 200,
|
||||
pitchdark: 200,
|
||||
pitchdark: 200
|
||||
},
|
||||
blindsense: {
|
||||
bright: 5,
|
||||
dim: 5,
|
||||
dark: 5,
|
||||
pitchdark: 5,
|
||||
},
|
||||
};
|
||||
pitchdark: 5
|
||||
}
|
||||
}
|
||||
const SIGHT_NAMES = {
|
||||
lowlight: 'low-light-vision',
|
||||
darkvision: 'darkvision',
|
||||
nightvision: 'night-vision',
|
||||
blindsense: 'blindsense',
|
||||
};
|
||||
blindsense: 'blindsense'
|
||||
}
|
||||
const SIGHT_MODES = {
|
||||
lowlight: 'lowlight',
|
||||
darkvision: 'darkvision',
|
||||
nightvision: 'darkvision',
|
||||
basic: 'basic',
|
||||
blindsense: 'blindsense',
|
||||
};
|
||||
|
||||
function findAbility(token, swid) {
|
||||
return token.actor.items.find((i) => i.type === 'ability' && i.system.swid === swid);
|
||||
blindsense: 'blindsense'
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const scene = game.scenes.current;
|
||||
let sceneBright = BRIGHT_LEVELS[0];
|
||||
function findAbility (token, swid) {
|
||||
return token.actor.items.find(i => i.type === 'ability' && i.system.swid === swid)
|
||||
}
|
||||
|
||||
async function main () {
|
||||
const scene = game.scenes.current
|
||||
let sceneBright = BRIGHT_LEVELS[0]
|
||||
if (scene.darkness > THRESHOLDS.pitchdark) {
|
||||
sceneBright = BRIGHT_LEVELS[3];
|
||||
sceneBright = BRIGHT_LEVELS[3]
|
||||
} else if (scene.darkness > THRESHOLDS.dark) {
|
||||
sceneBright = BRIGHT_LEVELS[2];
|
||||
sceneBright = BRIGHT_LEVELS[2]
|
||||
} else if (scene.darkness > THRESHOLDS.dim) {
|
||||
sceneBright = BRIGHT_LEVELS[1];
|
||||
sceneBright = BRIGHT_LEVELS[1]
|
||||
}
|
||||
let bright = sceneBright;
|
||||
let bright = sceneBright
|
||||
if (argBright && BRIGHT_LEVELS.includes(argBright)) {
|
||||
bright = argBright;
|
||||
bright = argBright
|
||||
}
|
||||
const menuData = {
|
||||
inputs: [
|
||||
{ type: 'radio', label: 'Bright Light', options: ['bright', bright === BRIGHT_LEVELS[0]] },
|
||||
{ type: 'radio', label: 'Dim Light', options: ['bright', bright === BRIGHT_LEVELS[1]] },
|
||||
{ type: 'radio', label: 'Dark', options: ['bright', bright === BRIGHT_LEVELS[2]] },
|
||||
{ type: 'radio', label: 'Pitch Dark', options: ['bright', bright === BRIGHT_LEVELS[3]] }
|
||||
],
|
||||
buttons: [
|
||||
{ label: 'Select Scene Brightness', value: 'ok', default: true },
|
||||
{ label: 'Cancel', value: 'cancel' }
|
||||
]
|
||||
}
|
||||
const menuConfig = { title: 'Select scene brightness' }
|
||||
const result = await warpgate.menu(menuData, menuConfig)
|
||||
if (result.buttons !== 'ok') { return }
|
||||
|
||||
for (let i = 0; i < 4; i++) {
|
||||
if (result.inputs[i]) { bright = BRIGHT_LEVELS[i] }
|
||||
}
|
||||
|
||||
new foundry.applications.api.DialogV2({
|
||||
window: { title: 'Select scene brightness' },
|
||||
content: `
|
||||
<form>
|
||||
<h2>Set token vision</h2>
|
||||
<p>All tokens with vision will be adjusted</p>
|
||||
<div class="form-group">
|
||||
<label class="checkbox">
|
||||
<input type="radio" name="bright" value="${BRIGHT_LEVELS[0]}"
|
||||
${bright === BRIGHT_LEVELS[0] ? 'checked' : ''}/>
|
||||
Bright Light
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox">
|
||||
<input type="radio" name="bright" value="${BRIGHT_LEVELS[1]}"
|
||||
${bright === BRIGHT_LEVELS[1] ? 'checked' : ''}/>
|
||||
Dim Light
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox">
|
||||
<input type="radio" name="bright" value="${BRIGHT_LEVELS[2]}"
|
||||
${bright === BRIGHT_LEVELS[2] ? 'checked' : ''}/>
|
||||
Dark
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox">
|
||||
<input type="radio" name="bright" value="${BRIGHT_LEVELS[3]}"
|
||||
${bright === BRIGHT_LEVELS[3] ? 'checked' : ''}/>
|
||||
Pitch Dark
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
`,
|
||||
buttons: [
|
||||
{
|
||||
action: "submit",
|
||||
label: 'Select scene Brightness',
|
||||
value: 'ok',
|
||||
callback: (event, button, dialog) => {
|
||||
const form = button.form;
|
||||
const formDataObject = new foundry.applications.ux.FormDataExtended(form).object;
|
||||
console.log('form data', formDataObject, form);
|
||||
|
||||
bright = formDataObject.bright;
|
||||
for (const tokenId of scene.tokens.map((t) => t.id)) {
|
||||
const token = scene.tokens.get(tokenId);
|
||||
for (const tokenId of scene.tokens.map(t => t.id)) {
|
||||
const token = scene.tokens.get(tokenId)
|
||||
if (!token.sight.enabled) {
|
||||
console.log(`Skipping ${token.name}, vision not enabled`);
|
||||
continue;
|
||||
console.log(`Skipping ${token.name}, vision not enabled`)
|
||||
continue
|
||||
// don't set sight on a token where it's not enabled
|
||||
}
|
||||
let sightType = 'basic';
|
||||
let sightType = 'basic'
|
||||
for (const sight in SIGHT_NAMES) {
|
||||
if (findAbility(token, SIGHT_NAMES[sight])) {
|
||||
sightType = sight;
|
||||
sightType = sight
|
||||
}
|
||||
}
|
||||
const range = RANGES[sightType][bright];
|
||||
const sightMode = SIGHT_MODES[sightType];
|
||||
const visionModeData = CONFIG.Canvas.visionModes[sightMode].vision.defaults;
|
||||
const range = RANGES[sightType][bright]
|
||||
const sightMode = SIGHT_MODES[sightType]
|
||||
const visionModeData = CONFIG.Canvas.visionModes[sightMode].vision.defaults
|
||||
const data = {
|
||||
'sight.range': range,
|
||||
'sight.visionMode': sightMode,
|
||||
'sight.attenuation': visionModeData.attenuation,
|
||||
'sight.brightness': visionModeData.brightness,
|
||||
'sight.saturation': visionModeData.saturation,
|
||||
'sight.contrast': visionModeData.contrast,
|
||||
};
|
||||
console.log(`Updating ${token.name}:`, sightType, bright, data);
|
||||
token.update(data);
|
||||
'sight.contrast': visionModeData.contrast
|
||||
}
|
||||
console.log(`Updating ${token.name}:`, sightType, bright, data)
|
||||
await token.update(data)
|
||||
}
|
||||
},
|
||||
},
|
||||
{ action: "cancel", label: 'Cancel' },
|
||||
],
|
||||
}).render(true);
|
||||
}
|
||||
|
||||
main();
|
||||
main()
|
||||
|
||||
@ -1,25 +1,21 @@
|
||||
{
|
||||
"id": "swade-mb-helpers",
|
||||
"title": "SWADE Helpers (MB)",
|
||||
"description": "Mike's collection of SWADE helpers",
|
||||
"version": "2.3.5",
|
||||
"description": "Mike's collection of swade helpers",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike",
|
||||
"flags": {}
|
||||
"name": "Mike"
|
||||
}
|
||||
],
|
||||
"url": "https://git.bloy.org/foundryvtt/swade-mb-helpers",
|
||||
"version": "4.1.0",
|
||||
"compatibility": {
|
||||
"minimum": "13",
|
||||
"verified": "13"
|
||||
"minimum": "11",
|
||||
"verified": "11"
|
||||
},
|
||||
"esmodules": [
|
||||
"module/swade-mb-helpers.js"
|
||||
],
|
||||
"styles": [
|
||||
"styles/swade-mb-helpers.css"
|
||||
"scripts/module.js"
|
||||
],
|
||||
"socket": true,
|
||||
"packs": [
|
||||
{
|
||||
"name": "module-docs",
|
||||
@ -44,7 +40,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CommonActions",
|
||||
"name": "Common Actions",
|
||||
"label": "SWADE MB Common Actions",
|
||||
"path": "packs/common-actions",
|
||||
"type": "Item",
|
||||
@ -65,17 +61,6 @@
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "power-actors",
|
||||
"label": "SWADE MB Example Power Actors",
|
||||
"path": "packs/power-actors",
|
||||
"type": "Actor",
|
||||
"system": "swade",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "swade-mb-gear",
|
||||
"label": "SWADE MB Gear",
|
||||
@ -99,8 +84,7 @@
|
||||
"helper-macros",
|
||||
"helper-actors",
|
||||
"Common Actions",
|
||||
"swade-mb-gear",
|
||||
"power-actors"
|
||||
"swade-mb-gear"
|
||||
]
|
||||
}
|
||||
],
|
||||
@ -111,29 +95,31 @@
|
||||
"type": "system",
|
||||
"manifest": "https://gitlab.com/api/v4/projects/16269883/packages/generic/swade/latest/system.json",
|
||||
"compatibility": {
|
||||
"minimum": "5.1.0",
|
||||
"verified": "5.1.0"
|
||||
"verified": "2.2.5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requires": [
|
||||
{
|
||||
"id": "warpgate",
|
||||
"type": "module",
|
||||
"manifest": "https://github.com/trioderegion/warpgate/releases/latest/download/module.json",
|
||||
"compatibility": {
|
||||
"verified": "1.16.2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "socketlib",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
},
|
||||
{
|
||||
"id": "tcal",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
},
|
||||
{
|
||||
"id": "sequencer",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
}
|
||||
],
|
||||
"recommends": [
|
||||
{
|
||||
"id": "token-variants",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
},
|
||||
{
|
||||
"id": "torch",
|
||||
"type": "module",
|
||||
@ -141,25 +127,13 @@
|
||||
},
|
||||
{
|
||||
"id": "JB2A_DnD5e",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
},
|
||||
{
|
||||
"id": "visual-active-effects",
|
||||
"type": "module",
|
||||
"compatibility": {}
|
||||
"type": "module"
|
||||
}
|
||||
]
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"name": "English",
|
||||
"path": "lang/en.json",
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"socket": true,
|
||||
"manifest": "https://git.bloy.org/foundryvtt/swade-mb-helpers/releases/download/latest/module.json",
|
||||
"download": "https://git.bloy.org/foundryvtt/swade-mb-helpers/releases/download/latest/swade-mb-helpers.zip"
|
||||
"url": "https://git.bloy.org/foundryvtt/swade-mb-helpers",
|
||||
"manifest": "https://git.bloy.org/foundryvtt/swade-mb-helpers/raw/branch/main/module.json",
|
||||
"download": "https://git.bloy.org/foundryvtt/swade-mb-helpers/archive/main.zip",
|
||||
"license": "./LICENSE",
|
||||
"readme": "./README.md"
|
||||
}
|
||||
14694
package-lock.json
generated
14694
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
56
package.json
56
package.json
@ -1,53 +1,11 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "swade-mb-helpers",
|
||||
"version": "2.4.3",
|
||||
"description": "Mike's Collection of swade helpers",
|
||||
"license": "ALL RIGHTS RESERVED",
|
||||
"homepage": "https://git.bloy.org/foundryvtt/swade-mb-helpers",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Mike"
|
||||
}
|
||||
],
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "gulp build",
|
||||
"build:watch": "gulp watch",
|
||||
"link-project": "gulp link",
|
||||
"clean": "gulp clean",
|
||||
"clean:link": "gulp link --clean",
|
||||
"lint": "eslint --ext .js,.cjs,.mjs .",
|
||||
"lint:fix": "eslint --ext .js,.cjs,.mjs --fix .",
|
||||
"format": "prettier --write \"./**/*.(js|cjs|mjs|json|yml|scss)\"",
|
||||
"postinstall": "husky install"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@rollup/stream": "^3.0.1",
|
||||
"@typhonjs-fvtt/eslint-config-foundry.js": "^0.8.0",
|
||||
"eslint": "^9.2.0",
|
||||
"eslint-config-prettier": "^10.1.5",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"fs-extra": "^11.2.0",
|
||||
"gulp": "^5.0.0",
|
||||
"gulp-dart-sass": "^1.1.0",
|
||||
"gulp-sourcemaps": "^2.6.5",
|
||||
"husky": "^9.0.11",
|
||||
"lint-staged": "^16.1.0",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-eslint": "^16.3.0",
|
||||
"prettier-eslint-cli": "^8.0.1",
|
||||
"rollup": "^2.79.2",
|
||||
"typescript": "^5.7.3",
|
||||
"typescript-language-server": "^4.3.3",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vinyl-source-stream": "^2.0.0",
|
||||
"vscode-langservers-extracted": "^4.10.0",
|
||||
"yargs": "^18.0.0"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.(js|cjs|mjs)": "eslint --fix",
|
||||
"*.(json|yml|scss)": "prettier --write"
|
||||
"@league-of-foundry-developers/foundry-vtt-types": "^9.280.0",
|
||||
"eslint": "^8.48.0",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.28.1",
|
||||
"eslint-plugin-n": "^16.0.2",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"typescript": "^5.2.2"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
packs/common-actions/000005.ldb
Normal file
BIN
packs/common-actions/000005.ldb
Normal file
Binary file not shown.
5
packs/common-actions/LOG
Normal file
5
packs/common-actions/LOG
Normal file
@ -0,0 +1,5 @@
|
||||
2024/01/29-23:43:16.099904 7f72097bd700 Delete type=3 #1
|
||||
2024/01/29-23:43:16.103068 7f6f6bfff700 Level-0 table #5: started
|
||||
2024/01/29-23:43:16.110852 7f6f6bfff700 Level-0 table #5: 15710 bytes OK
|
||||
2024/01/29-23:43:16.121887 7f6f6bfff700 Delete type=0 #3
|
||||
2024/01/29-23:43:16.122061 7f6f6bfff700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/common-actions/MANIFEST-000002
Normal file
BIN
packs/common-actions/MANIFEST-000002
Normal file
Binary file not shown.
@ -69,13 +69,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695165795303,
|
||||
"modifiedTime": 1702839170547,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!items!YBfJFr0Q0Hnz3Z0Z"
|
||||
}
|
||||
@ -79,13 +79,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695165983064,
|
||||
"modifiedTime": 1702839170549,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!items!uOfqTXUyHk6M5tcp"
|
||||
}
|
||||
@ -95,13 +95,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695082141993,
|
||||
"modifiedTime": 1702839170544,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "8fL0gIyNIxr2hr2s",
|
||||
"sort": 400000,
|
||||
@ -55,13 +55,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1696130722637,
|
||||
"modifiedTime": 1702839170544,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "Ne3oDoPl3hc8eEX1",
|
||||
"sort": 300000,
|
||||
@ -79,13 +79,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695250911715,
|
||||
"modifiedTime": 1702839170549,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!items!pSztYcH5w4VNI2nb"
|
||||
}
|
||||
@ -42,24 +42,21 @@
|
||||
},
|
||||
"effects": [],
|
||||
"flags": {
|
||||
"core": {}
|
||||
"core": {},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1679667342015,
|
||||
"modifiedTime": 1702839170544,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "Lijthu5ONJvcIzDX",
|
||||
@ -55,13 +55,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1696130722637,
|
||||
"modifiedTime": 1702839170546,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "TteEFvR0yPWKNbI5",
|
||||
"sort": 200000,
|
||||
@ -34,24 +34,21 @@
|
||||
},
|
||||
"effects": [],
|
||||
"flags": {
|
||||
"core": {}
|
||||
"core": {},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1674019466231,
|
||||
"modifiedTime": 1702839170550,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "xA7qKMmugJv7z6j1",
|
||||
@ -36,24 +36,21 @@
|
||||
},
|
||||
"effects": [],
|
||||
"flags": {
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
},
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1668048955652,
|
||||
"modifiedTime": 1702839170547,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "hTRU6MiIYlFUVk4T",
|
||||
@ -81,24 +81,21 @@
|
||||
"_version": 1
|
||||
}
|
||||
},
|
||||
"core": {}
|
||||
"core": {},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1667883835416,
|
||||
"modifiedTime": 1702839170543,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "6fkUnnyILsETRfjI",
|
||||
@ -81,24 +81,21 @@
|
||||
"_version": 1
|
||||
}
|
||||
},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
},
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1667883835416,
|
||||
"modifiedTime": 1702839170547,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "jcWvDnoBNyVdXnsu",
|
||||
@ -72,24 +72,21 @@
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
"core": {},
|
||||
"exportSource": {
|
||||
"world": "sw-module-creation",
|
||||
"system": "swade",
|
||||
"coreVersion": "11.315",
|
||||
"systemVersion": "3.2.2"
|
||||
}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1699734652310,
|
||||
"modifiedTime": 1702839170545,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "sw-module-creation",
|
||||
"uuid": null,
|
||||
"coreVersion": "11.315",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.2"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "Sjg9D9FQ0uxZQrD0",
|
||||
"sort": 0,
|
||||
@ -28,6 +28,7 @@
|
||||
"effects": [
|
||||
{
|
||||
"name": "Dim Lighting",
|
||||
"icon": "icons/magic/light/light-lantern-lit-white.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.stats.globalMods.trait",
|
||||
@ -58,26 +59,12 @@
|
||||
"loseTurnOnHold": false
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/magic/light/light-lantern-lit-white.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!RC1Nz6iph8wPPK1B.fpSigRcCCADmisXP"
|
||||
},
|
||||
{
|
||||
"name": "Dark Lighting",
|
||||
"icon": "icons/magic/light/light-candles-lit-white.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.stats.globalMods.trait",
|
||||
@ -108,26 +95,12 @@
|
||||
"favorite": true
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/magic/light/light-candles-lit-white.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW"
|
||||
},
|
||||
{
|
||||
"name": "Pitch Darkness",
|
||||
"icon": "icons/magic/unholy/barrier-shield-glowing-pink.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.stats.globalMods.trait",
|
||||
@ -158,22 +131,7 @@
|
||||
"favorite": true
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/magic/unholy/barrier-shield-glowing-pink.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!RC1Nz6iph8wPPK1B.NI4hfxplfJ5pqImL"
|
||||
}
|
||||
],
|
||||
@ -186,16 +144,13 @@
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.4.1",
|
||||
"coreVersion": "13.344",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1702939897892,
|
||||
"modifiedTime": 1718722764722,
|
||||
"lastModifiedBy": "JYfESJbwMlpOqKeR",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"modifiedTime": 1702960438222,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "RC1Nz6iph8wPPK1B",
|
||||
"sort": 300000,
|
||||
"sort": 0,
|
||||
"_key": "!items!RC1Nz6iph8wPPK1B"
|
||||
}
|
||||
@ -27,6 +27,7 @@
|
||||
"effects": [
|
||||
{
|
||||
"name": "Strength Mutagen",
|
||||
"icon": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.attributes.strength.die.modifier",
|
||||
@ -93,8 +94,8 @@
|
||||
"_id": "wA6fOE9ZpM4ulyhg",
|
||||
"disabled": true,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"seconds": 3600,
|
||||
"startTime": 63435411894,
|
||||
"seconds": null,
|
||||
"combat": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
@ -128,26 +129,12 @@
|
||||
"extra": false
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!CLRtXyFT2whk6FkQ.wA6fOE9ZpM4ulyhg"
|
||||
},
|
||||
{
|
||||
"name": "Agility Mutagen",
|
||||
"icon": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "@Skill{Healing}[system.die.modifier]",
|
||||
@ -178,8 +165,8 @@
|
||||
"_id": "Fy6u8Vda0sL3cvUM",
|
||||
"disabled": true,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"seconds": 3600,
|
||||
"startTime": 63435411894,
|
||||
"seconds": null,
|
||||
"combat": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
@ -213,26 +200,12 @@
|
||||
"extra": false
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!CLRtXyFT2whk6FkQ.Fy6u8Vda0sL3cvUM"
|
||||
},
|
||||
{
|
||||
"name": "Vigor Mutagen",
|
||||
"icon": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.attributes.vigor.die.modifier",
|
||||
@ -269,8 +242,8 @@
|
||||
"_id": "nwbi7xVcNK8Q6O0S",
|
||||
"disabled": true,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"seconds": 3600,
|
||||
"startTime": 63435411894,
|
||||
"seconds": null,
|
||||
"combat": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
@ -304,22 +277,7 @@
|
||||
"extra": false
|
||||
}
|
||||
},
|
||||
"tint": "#ffffff",
|
||||
"_stats": {
|
||||
"coreVersion": "13.344",
|
||||
"systemId": null,
|
||||
"systemVersion": null,
|
||||
"createdTime": null,
|
||||
"modifiedTime": null,
|
||||
"lastModifiedBy": null,
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
},
|
||||
"img": "icons/skills/toxins/bottle-open-vapors-pink.webp",
|
||||
"type": "base",
|
||||
"system": {},
|
||||
"sort": 0,
|
||||
"tint": null,
|
||||
"_key": "!items.effects!CLRtXyFT2whk6FkQ.nwbi7xVcNK8Q6O0S"
|
||||
}
|
||||
],
|
||||
@ -333,16 +291,13 @@
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.4.1",
|
||||
"coreVersion": "13.344",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1706157319122,
|
||||
"modifiedTime": 1718722764722,
|
||||
"lastModifiedBy": "JYfESJbwMlpOqKeR",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"modifiedTime": 1706157765137,
|
||||
"lastModifiedBy": "Aqnn9hCDQPbyTWiq"
|
||||
},
|
||||
"_id": "CLRtXyFT2whk6FkQ",
|
||||
"sort": 200000,
|
||||
"sort": 0,
|
||||
"_key": "!items!CLRtXyFT2whk6FkQ"
|
||||
}
|
||||
@ -60,24 +60,21 @@
|
||||
"_version": 1
|
||||
}
|
||||
},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
},
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1667885227318,
|
||||
"modifiedTime": 1702839170547,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "ZlN2t7I05FjampmX",
|
||||
@ -46,13 +46,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1696130050023,
|
||||
"modifiedTime": 1702839170545,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "O1bgJSYRjxmSW3R5",
|
||||
"sort": -100000,
|
||||
@ -47,16 +47,13 @@
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.4.1",
|
||||
"coreVersion": "13.344",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695081676167,
|
||||
"modifiedTime": 1718722764722,
|
||||
"lastModifiedBy": "JYfESJbwMlpOqKeR",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"modifiedTime": 1705985534930,
|
||||
"lastModifiedBy": "Aqnn9hCDQPbyTWiq"
|
||||
},
|
||||
"_id": "vrfo9zsECbxan4dt",
|
||||
"sort": 400000,
|
||||
"sort": 100000,
|
||||
"_key": "!items!vrfo9zsECbxan4dt"
|
||||
}
|
||||
@ -81,24 +81,21 @@
|
||||
"_version": 1
|
||||
}
|
||||
},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
},
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1667884673139,
|
||||
"modifiedTime": 1702839170544,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "DKs4DNcTRYtcdrri",
|
||||
@ -40,24 +40,21 @@
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
"core": {},
|
||||
"exportSource": {
|
||||
"world": "sw-module-creation",
|
||||
"system": "swade",
|
||||
"coreVersion": "11.315",
|
||||
"systemVersion": "3.2.2"
|
||||
}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1690171610450,
|
||||
"modifiedTime": 1702839170548,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "sw-module-creation",
|
||||
"uuid": null,
|
||||
"coreVersion": "11.315",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.2"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "kOfyB9sMhLPoA4DI",
|
||||
"sort": 400000,
|
||||
@ -56,13 +56,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695165609050,
|
||||
"modifiedTime": 1702839170545,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "Tj9Pbdh9tu3ngd03",
|
||||
"sort": 750000,
|
||||
@ -54,13 +54,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695698203871,
|
||||
"modifiedTime": 1702839170546,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "XJYoBJcpr0Ar3cES",
|
||||
"sort": 500000,
|
||||
@ -60,24 +60,21 @@
|
||||
"_version": 1
|
||||
}
|
||||
},
|
||||
"exportSource": {
|
||||
"world": "swpf-rotr",
|
||||
"system": "swade",
|
||||
"coreVersion": "10.291",
|
||||
"systemVersion": "2.2.5"
|
||||
},
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1667885448561,
|
||||
"modifiedTime": 1702839170545,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": {
|
||||
"worldId": "swpf-rotr",
|
||||
"uuid": null,
|
||||
"coreVersion": "10.291",
|
||||
"systemId": "swade",
|
||||
"systemVersion": "2.2.5"
|
||||
}
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"folder": "rXqlP1phfPHNZrRT",
|
||||
"_id": "NhwZbABEXrt8OzT3",
|
||||
BIN
packs/gear/000005.ldb
Normal file
BIN
packs/gear/000005.ldb
Normal file
Binary file not shown.
5
packs/gear/LOG
Normal file
5
packs/gear/LOG
Normal file
@ -0,0 +1,5 @@
|
||||
2024/01/29-23:43:17.011739 7fcd23fff700 Delete type=3 #1
|
||||
2024/01/29-23:43:17.014256 7fcd237fe700 Level-0 table #5: started
|
||||
2024/01/29-23:43:17.021608 7fcd237fe700 Level-0 table #5: 6787 bytes OK
|
||||
2024/01/29-23:43:17.030434 7fcd237fe700 Delete type=0 #3
|
||||
2024/01/29-23:43:17.030575 7fcd237fe700 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/gear/MANIFEST-000002
Normal file
BIN
packs/gear/MANIFEST-000002
Normal file
Binary file not shown.
@ -115,13 +115,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1696794187384,
|
||||
"modifiedTime": 1702839170624,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "tWWSfEMmLmws6Yb1",
|
||||
"sort": 300000,
|
||||
@ -82,13 +82,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1690171224569,
|
||||
"modifiedTime": 1702839170624,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "JWyBQe4tnOYljFAF",
|
||||
"sort": 200000,
|
||||
@ -118,13 +118,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1696797163890,
|
||||
"modifiedTime": 1702839170624,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "hK9zTAIl26eBbK84",
|
||||
"sort": 100000,
|
||||
BIN
packs/helper-actors/000005.ldb
Normal file
BIN
packs/helper-actors/000005.ldb
Normal file
Binary file not shown.
5
packs/helper-actors/LOG
Normal file
5
packs/helper-actors/LOG
Normal file
@ -0,0 +1,5 @@
|
||||
2024/01/29-23:43:17.871203 7fcc2b7fe700 Delete type=3 #1
|
||||
2024/01/29-23:43:17.874557 7fcc2a542700 Level-0 table #5: started
|
||||
2024/01/29-23:43:17.881745 7fcc2a542700 Level-0 table #5: 1751 bytes OK
|
||||
2024/01/29-23:43:17.891265 7fcc2a542700 Delete type=0 #3
|
||||
2024/01/29-23:43:17.891403 7fcc2a542700 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/helper-actors/MANIFEST-000002
Normal file
BIN
packs/helper-actors/MANIFEST-000002
Normal file
Binary file not shown.
@ -157,12 +157,7 @@
|
||||
"scaleY": 1,
|
||||
"offsetX": 0,
|
||||
"offsetY": 0,
|
||||
"rotation": 0,
|
||||
"anchorX": 0.5,
|
||||
"anchorY": 0.5,
|
||||
"fit": "contain",
|
||||
"tint": "#ffffff",
|
||||
"alphaThreshold": 0.75
|
||||
"rotation": 0
|
||||
},
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
@ -197,10 +192,7 @@
|
||||
"darkness": {
|
||||
"min": 0,
|
||||
"max": 1
|
||||
},
|
||||
"negative": false,
|
||||
"priority": 0,
|
||||
"color": null
|
||||
}
|
||||
},
|
||||
"sight": {
|
||||
"enabled": false,
|
||||
@ -210,34 +202,11 @@
|
||||
"attenuation": 0.1,
|
||||
"brightness": 0,
|
||||
"saturation": 0,
|
||||
"contrast": 0,
|
||||
"color": null
|
||||
"contrast": 0
|
||||
},
|
||||
"detectionModes": [],
|
||||
"flags": {},
|
||||
"randomImg": false,
|
||||
"occludable": {
|
||||
"radius": 0
|
||||
},
|
||||
"ring": {
|
||||
"enabled": false,
|
||||
"colors": {
|
||||
"ring": null,
|
||||
"background": null
|
||||
},
|
||||
"effects": 1,
|
||||
"subject": {
|
||||
"scale": 1,
|
||||
"texture": null
|
||||
}
|
||||
},
|
||||
"turnMarker": {
|
||||
"mode": 1,
|
||||
"animation": null,
|
||||
"src": null,
|
||||
"disposition": false
|
||||
},
|
||||
"movementAction": null
|
||||
"randomImg": false
|
||||
},
|
||||
"items": [],
|
||||
"effects": [],
|
||||
@ -251,13 +220,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695252634314,
|
||||
"modifiedTime": 1702839170585,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!actors!U5v4gFHquo0Y1SAq"
|
||||
}
|
||||
BIN
packs/helper-macros/000005.ldb
Normal file
BIN
packs/helper-macros/000005.ldb
Normal file
Binary file not shown.
5
packs/helper-macros/LOG
Normal file
5
packs/helper-macros/LOG
Normal file
@ -0,0 +1,5 @@
|
||||
2024/01/29-23:43:18.604510 7f21da7be700 Delete type=3 #1
|
||||
2024/01/29-23:43:18.607134 7f21d8fbb700 Level-0 table #5: started
|
||||
2024/01/29-23:43:18.630768 7f21d8fbb700 Level-0 table #5: 18825 bytes OK
|
||||
2024/01/29-23:43:18.639775 7f21d8fbb700 Delete type=0 #3
|
||||
2024/01/29-23:43:18.639913 7f21d8fbb700 Manual compaction at level-0 from '!folders!A3iVDJD2cTuTLpBu' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/helper-macros/MANIFEST-000002
Normal file
BIN
packs/helper-macros/MANIFEST-000002
Normal file
Binary file not shown.
25
packs/helper-macros/_source/Blind_e9HvLMtaDw2qpcE8.json
Normal file
25
packs/helper-macros/_source/Blind_e9HvLMtaDw2qpcE8.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Blind",
|
||||
"type": "script",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/svg/blind.svg",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Blind'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1678165762773,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "e9HvLMtaDw2qpcE8",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 700000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!e9HvLMtaDw2qpcE8"
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Boost/Lower Trait",
|
||||
"type": "script",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/life/cross-embers-glow-yellow-purple.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Boost/Lower Trait'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1677458254287,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "1AqIFHAcX5TRdE8X",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 2100000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!1AqIFHAcX5TRdE8X"
|
||||
}
|
||||
27
packs/helper-macros/_source/Burrow_e4LvHlTNDy5zcGIG.json
Normal file
27
packs/helper-macros/_source/Burrow_e4LvHlTNDy5zcGIG.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "Burrow",
|
||||
"type": "script",
|
||||
"author": "sVoCvBU1knmXzoYe",
|
||||
"img": "icons/magic/earth/projectile-stone-landslide.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Burrow'\n})",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"sVoCvBU1knmXzoYe": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1696179835774,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "e4LvHlTNDy5zcGIG",
|
||||
"sort": 400000,
|
||||
"_key": "!macros!e4LvHlTNDy5zcGIG"
|
||||
}
|
||||
25
packs/helper-macros/_source/Confusion_L2IstecV7ivcrgUI.json
Normal file
25
packs/helper-macros/_source/Confusion_L2IstecV7ivcrgUI.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Confusion",
|
||||
"type": "script",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/control/hypnosis-mesmerism-swirl.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Confusion'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1678082334572,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "L2IstecV7ivcrgUI",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 2000000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!L2IstecV7ivcrgUI"
|
||||
}
|
||||
27
packs/helper-macros/_source/Darksight_YIdF96EfItR641oP.json
Normal file
27
packs/helper-macros/_source/Darksight_YIdF96EfItR641oP.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "Darksight",
|
||||
"type": "script",
|
||||
"author": "sVoCvBU1knmXzoYe",
|
||||
"img": "icons/magic/perception/eye-ringed-glow-angry-small-teal.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Darksight'\n})",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"sVoCvBU1knmXzoYe": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1696179835774,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "YIdF96EfItR641oP",
|
||||
"sort": 300000,
|
||||
"_key": "!macros!YIdF96EfItR641oP"
|
||||
}
|
||||
25
packs/helper-macros/_source/Deflection_HYTiftQW0pwwOQGH.json
Normal file
25
packs/helper-macros/_source/Deflection_HYTiftQW0pwwOQGH.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Deflection",
|
||||
"type": "script",
|
||||
"scope": "global",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/defensive/shield-barrier-deflect-teal.webp",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Deflection'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1677645552357,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "HYTiftQW0pwwOQGH",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 1900000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!HYTiftQW0pwwOQGH"
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "Detect/Conceal Arcana",
|
||||
"type": "script",
|
||||
"author": "sVoCvBU1knmXzoYe",
|
||||
"img": "icons/magic/perception/third-eye-blue-red.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Detect/Conceal Arcana'\n})",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"sVoCvBU1knmXzoYe": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1696208623170,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "stHHxnYfGW0X1l5R",
|
||||
"sort": 600000,
|
||||
"_key": "!macros!stHHxnYfGW0X1l5R"
|
||||
}
|
||||
27
packs/helper-macros/_source/Disguise_MYfrVZpLSrpp0vYW.json
Normal file
27
packs/helper-macros/_source/Disguise_MYfrVZpLSrpp0vYW.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "Disguise",
|
||||
"type": "script",
|
||||
"author": "sVoCvBU1knmXzoYe",
|
||||
"img": "icons/skills/social/diplomacy-peace-alliance.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Disguise'\n})",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"sVoCvBU1knmXzoYe": 3
|
||||
},
|
||||
"flags": {
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1696208623170,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "MYfrVZpLSrpp0vYW",
|
||||
"sort": 200000,
|
||||
"_key": "!macros!MYfrVZpLSrpp0vYW"
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "Effect Macros",
|
||||
"sorting": "a",
|
||||
"folder": null,
|
||||
"type": "Macro",
|
||||
"_id": "hIbrWxg1nDutCSwt",
|
||||
"sort": 0,
|
||||
"color": null,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.2",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1695251622720,
|
||||
"modifiedTime": 1700436446749,
|
||||
"lastModifiedBy": "R9ZgY0IvWl8ovIuT"
|
||||
},
|
||||
"_key": "!folders!hIbrWxg1nDutCSwt"
|
||||
}
|
||||
25
packs/helper-macros/_source/Entangle_2TOeRNCJT3T2px8D.json
Normal file
25
packs/helper-macros/_source/Entangle_2TOeRNCJT3T2px8D.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Entangle",
|
||||
"type": "script",
|
||||
"scope": "global",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/nature/root-vine-barrier-wall-brown.webp",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Entangle'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1678164427219,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "2TOeRNCJT3T2px8D",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 1800000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!2TOeRNCJT3T2px8D"
|
||||
}
|
||||
@ -7,7 +7,7 @@
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.fearTable(actor)",
|
||||
"folder": null,
|
||||
"sort": 200000,
|
||||
"sort": 0,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"sVoCvBU1knmXzoYe": 3
|
||||
@ -16,13 +16,10 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1703096862424,
|
||||
"modifiedTime": 1707686618258,
|
||||
"lastModifiedBy": "Aqnn9hCDQPbyTWiq",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"modifiedTime": 1703096940207,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!macros!S6HY6RqjPTt0z0yY"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
27
packs/helper-macros/_source/Havoc_0CalvjuxtMvY2enn.json
Normal file
27
packs/helper-macros/_source/Havoc_0CalvjuxtMvY2enn.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "Havoc",
|
||||
"type": "script",
|
||||
"scope": "global",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/air/air-burst-spiral-yellow.webp",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Havoc'\n})",
|
||||
"flags": {
|
||||
"core": {}
|
||||
},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.2",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1678164427219,
|
||||
"modifiedTime": 1700436564699,
|
||||
"lastModifiedBy": "R9ZgY0IvWl8ovIuT"
|
||||
},
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_id": "0CalvjuxtMvY2enn",
|
||||
"sort": 0,
|
||||
"_key": "!macros!0CalvjuxtMvY2enn"
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Intangibility",
|
||||
"type": "script",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/magic/control/debuff-energy-hold-levitate-blue-yellow.webp",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Intangibility'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1678168528898,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "OMDjgWLJyE9BJAwT",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 1700000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!OMDjgWLJyE9BJAwT"
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Invisibility",
|
||||
"type": "script",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "icons/svg/invisible.svg",
|
||||
"scope": "global",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Invisibility'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1678168163811,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "11GOryzx2Q8MXbT6",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 1600000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!11GOryzx2Q8MXbT6"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "Action Deck",
|
||||
"name": "Poison",
|
||||
"sorting": "a",
|
||||
"folder": null,
|
||||
"type": "Macro",
|
||||
"_id": "VMi3DyJN0U0PosUH",
|
||||
"_id": "DbVwJ0fIfuijv8Nu",
|
||||
"sort": 0,
|
||||
"color": null,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.3.3",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1708920283645,
|
||||
"modifiedTime": 1708920283645,
|
||||
"createdTime": 1705990230579,
|
||||
"modifiedTime": 1705990230579,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_key": "!folders!VMi3DyJN0U0PosUH"
|
||||
"_key": "!folders!DbVwJ0fIfuijv8Nu"
|
||||
}
|
||||
@ -16,15 +16,12 @@
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.2.5",
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "11.315",
|
||||
"createdTime": 1693853383361,
|
||||
"modifiedTime": 1707686618258,
|
||||
"lastModifiedBy": "Aqnn9hCDQPbyTWiq",
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null
|
||||
"modifiedTime": 1702959790712,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "AjuA11hQ48UJNwlH",
|
||||
"sort": 900000,
|
||||
"sort": 500000,
|
||||
"_key": "!macros!AjuA11hQ48UJNwlH"
|
||||
}
|
||||
25
packs/helper-macros/_source/Protection_YETsNWOWfIxyLPdC.json
Normal file
25
packs/helper-macros/_source/Protection_YETsNWOWfIxyLPdC.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "Protection",
|
||||
"type": "script",
|
||||
"scope": "global",
|
||||
"author": "R9ZgY0IvWl8ovIuT",
|
||||
"img": "systems/swade/assets/icons/status/status_protection.svg",
|
||||
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Protection'\n})",
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"systemId": "swade",
|
||||
"systemVersion": "3.1.4",
|
||||
"coreVersion": "11.311",
|
||||
"createdTime": 1677630174987,
|
||||
"modifiedTime": 1696209757148,
|
||||
"lastModifiedBy": "sVoCvBU1knmXzoYe"
|
||||
},
|
||||
"_id": "YETsNWOWfIxyLPdC",
|
||||
"folder": "hIbrWxg1nDutCSwt",
|
||||
"sort": 1500000,
|
||||
"ownership": {
|
||||
"default": 0,
|
||||
"R9ZgY0IvWl8ovIuT": 3
|
||||
},
|
||||
"_key": "!macros!YETsNWOWfIxyLPdC"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user