2.2.0 release #38
11
CHANGELOG.md
11
CHANGELOG.md
@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- Power Effect for Havoc
|
||||
- Power Effect Macro for Havoc
|
||||
- Power Effect Action for Havoc
|
||||
- New Macro: Request Roll
|
||||
- NEW DEPENDENCY: socketlib
|
||||
- Documentation:
|
||||
- API Documentation
|
||||
- Request Roll macro documentation
|
||||
|
||||
## 2.1.0
|
||||
|
||||
### Changed
|
||||
|
||||
70
macros/requestDialog.js
Normal file
70
macros/requestDialog.js
Normal file
@ -0,0 +1,70 @@
|
||||
const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens
|
||||
|
||||
async function main () {
|
||||
let tokens = Array.from(game.user.targets)
|
||||
if (tokens.length < 1) {
|
||||
tokens = canvas.tokens.controlled
|
||||
}
|
||||
if (tokens.length < 1) {
|
||||
ui.notifications.error('Please target or select some tokens')
|
||||
return
|
||||
}
|
||||
|
||||
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' }
|
||||
],
|
||||
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 skills = token.actor.items.filter(i => i.type === 'skill' &&
|
||||
!['Untrained', 'Unskilled Attempt'].includes(i.name))
|
||||
for (const skill of skills) {
|
||||
skillSet.add(skill.name)
|
||||
}
|
||||
}
|
||||
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 options = {}
|
||||
if (rollMod !== 0) {
|
||||
options.mods = [{ label: rollModDesc, value: rollMod }]
|
||||
}
|
||||
|
||||
requestRollFromTokens(tokens, rollType, rollDesc, options)
|
||||
}
|
||||
|
||||
main()
|
||||
21
module.json
21
module.json
@ -15,6 +15,7 @@
|
||||
"esmodules": [
|
||||
"scripts/module.js"
|
||||
],
|
||||
"socket": true,
|
||||
"packs": [
|
||||
{
|
||||
"name": "module-docs",
|
||||
@ -54,11 +55,22 @@
|
||||
"label": "SWADE MB Helper Actors",
|
||||
"path": "packs/helper-actors",
|
||||
"type": "Actor",
|
||||
"system": "swade",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
"system": "swade"
|
||||
{
|
||||
"name": "swade-mb-gear",
|
||||
"label": "SWADE MB Gear",
|
||||
"path": "packs/gear",
|
||||
"type": "Item",
|
||||
"system": "swade",
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
}
|
||||
],
|
||||
"packFolders": [
|
||||
@ -71,7 +83,8 @@
|
||||
"module-docs",
|
||||
"helper-macros",
|
||||
"helper-actors",
|
||||
"Common Actions"
|
||||
"Common Actions",
|
||||
"swade-mb-gear"
|
||||
]
|
||||
}
|
||||
],
|
||||
@ -94,6 +107,10 @@
|
||||
"compatibility": {
|
||||
"verified": "1.16.2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "socketlib",
|
||||
"type": "module"
|
||||
}
|
||||
],
|
||||
"recommends": [
|
||||
|
||||
Binary file not shown.
BIN
packs/common-actions/000215.ldb
Normal file
BIN
packs/common-actions/000215.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000170
|
||||
MANIFEST-000211
|
||||
|
||||
@ -1,8 +1,15 @@
|
||||
2023/11/07-23:29:20.343335 7f46667fc640 Recovering log #167
|
||||
2023/11/07-23:29:20.345329 7f46667fc640 Delete type=0 #167
|
||||
2023/11/07-23:29:20.345336 7f46667fc640 Delete type=3 #165
|
||||
2023/11/07-23:29:29.393563 7f46649f4640 Level-0 table #173: started
|
||||
2023/11/07-23:29:29.393574 7f46649f4640 Level-0 table #173: 0 bytes OK
|
||||
2023/11/07-23:29:29.394638 7f46649f4640 Delete type=0 #171
|
||||
2023/11/07-23:29:29.396575 7f46649f4640 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:29.396609 7f46649f4640 Manual compaction at level-1 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:06:40.386610 7f1f87fff640 Recovering log #209
|
||||
2023/11/20-21:06:40.392165 7f1f87fff640 Delete type=0 #209
|
||||
2023/11/20-21:06:40.392245 7f1f87fff640 Delete type=3 #207
|
||||
2023/11/20-21:52:53.117342 7f1f7fab1640 Level-0 table #214: started
|
||||
2023/11/20-21:52:53.119155 7f1f7fab1640 Level-0 table #214: 1361 bytes OK
|
||||
2023/11/20-21:52:53.120662 7f1f7fab1640 Delete type=0 #212
|
||||
2023/11/20-21:52:53.122863 7f1f7fab1640 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:52:53.123064 7f1f7fab1640 Manual compaction at level-1 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at '!items!6fkUnnyILsETRfjI' @ 267 : 1
|
||||
2023/11/20-21:52:53.123073 7f1f7fab1640 Compacting 1@1 + 1@2 files
|
||||
2023/11/20-21:52:53.125481 7f1f7fab1640 Generated table #215@1: 23 keys, 11463 bytes
|
||||
2023/11/20-21:52:53.125500 7f1f7fab1640 Compacted 1@1 + 1@2 files => 11463 bytes
|
||||
2023/11/20-21:52:53.126584 7f1f7fab1640 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/11/20-21:52:53.126649 7f1f7fab1640 Delete type=2 #214
|
||||
2023/11/20-21:52:53.126731 7f1f7fab1640 Delete type=2 #194
|
||||
2023/11/20-21:52:53.130970 7f1f7fab1640 Manual compaction at level-1 from '!items!6fkUnnyILsETRfjI' @ 267 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
|
||||
@ -1,15 +1,8 @@
|
||||
2023/11/07-17:50:41.783626 7f4666ffd640 Recovering log #163
|
||||
2023/11/07-17:50:41.785537 7f4666ffd640 Delete type=0 #163
|
||||
2023/11/07-17:50:41.785550 7f4666ffd640 Delete type=3 #161
|
||||
2023/11/07-23:29:14.520879 7f46649f4640 Level-0 table #168: started
|
||||
2023/11/07-23:29:14.522237 7f46649f4640 Level-0 table #168: 19378 bytes OK
|
||||
2023/11/07-23:29:14.523105 7f46649f4640 Delete type=0 #166
|
||||
2023/11/07-23:29:14.524999 7f46649f4640 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:14.526907 7f46649f4640 Manual compaction at level-1 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at '!items!xA7qKMmugJv7z6j1' @ 219 : 1
|
||||
2023/11/07-23:29:14.526908 7f46649f4640 Compacting 1@1 + 1@2 files
|
||||
2023/11/07-23:29:14.527704 7f46649f4640 Generated table #169@1: 21 keys, 9211 bytes
|
||||
2023/11/07-23:29:14.527711 7f46649f4640 Compacted 1@1 + 1@2 files => 9211 bytes
|
||||
2023/11/07-23:29:14.528471 7f46649f4640 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/11/07-23:29:14.528489 7f46649f4640 Delete type=2 #168
|
||||
2023/11/07-23:29:14.528516 7f46649f4640 Delete type=2 #160
|
||||
2023/11/07-23:29:14.541956 7f46649f4640 Manual compaction at level-1 from '!items!xA7qKMmugJv7z6j1' @ 219 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:28:00.231858 7f1f877fe640 Recovering log #205
|
||||
2023/11/19-23:28:00.235312 7f1f877fe640 Delete type=0 #205
|
||||
2023/11/19-23:28:00.235339 7f1f877fe640 Delete type=3 #203
|
||||
2023/11/19-23:53:02.984028 7f1f7fab1640 Level-0 table #210: started
|
||||
2023/11/19-23:53:02.984051 7f1f7fab1640 Level-0 table #210: 0 bytes OK
|
||||
2023/11/19-23:53:02.985426 7f1f7fab1640 Delete type=0 #208
|
||||
2023/11/19-23:53:02.987037 7f1f7fab1640 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:53:02.987301 7f1f7fab1640 Manual compaction at level-1 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items!xA7qKMmugJv7z6j1' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/common-actions/MANIFEST-000211
Normal file
BIN
packs/common-actions/MANIFEST-000211
Normal file
Binary file not shown.
BIN
packs/gear/000069.ldb
Normal file
BIN
packs/gear/000069.ldb
Normal file
Binary file not shown.
1
packs/gear/CURRENT
Normal file
1
packs/gear/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000102
|
||||
0
packs/gear/LOCK
Normal file
0
packs/gear/LOCK
Normal file
8
packs/gear/LOG
Normal file
8
packs/gear/LOG
Normal file
@ -0,0 +1,8 @@
|
||||
2023/11/20-21:06:40.409700 7f1f87fff640 Recovering log #100
|
||||
2023/11/20-21:06:40.414561 7f1f87fff640 Delete type=3 #98
|
||||
2023/11/20-21:06:40.414639 7f1f87fff640 Delete type=0 #100
|
||||
2023/11/20-21:52:53.126794 7f1f7fab1640 Level-0 table #105: started
|
||||
2023/11/20-21:52:53.126822 7f1f7fab1640 Level-0 table #105: 0 bytes OK
|
||||
2023/11/20-21:52:53.127902 7f1f7fab1640 Delete type=0 #103
|
||||
2023/11/20-21:52:53.130985 7f1f7fab1640 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:52:53.131222 7f1f7fab1640 Manual compaction at level-1 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end)
|
||||
8
packs/gear/LOG.old
Normal file
8
packs/gear/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/11/19-23:28:00.254245 7f1f877fe640 Recovering log #96
|
||||
2023/11/19-23:28:00.258969 7f1f877fe640 Delete type=3 #94
|
||||
2023/11/19-23:28:00.259068 7f1f877fe640 Delete type=0 #96
|
||||
2023/11/19-23:53:02.987311 7f1f7fab1640 Level-0 table #101: started
|
||||
2023/11/19-23:53:02.987354 7f1f7fab1640 Level-0 table #101: 0 bytes OK
|
||||
2023/11/19-23:53:02.989583 7f1f7fab1640 Delete type=0 #99
|
||||
2023/11/19-23:53:02.994695 7f1f7fab1640 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:53:02.997387 7f1f7fab1640 Manual compaction at level-1 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end)
|
||||
BIN
packs/gear/MANIFEST-000102
Normal file
BIN
packs/gear/MANIFEST-000102
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000069
|
||||
MANIFEST-000109
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
2023/11/07-23:29:20.346979 7f4665ffb640 Recovering log #66
|
||||
2023/11/07-23:29:20.349569 7f4665ffb640 Delete type=3 #64
|
||||
2023/11/07-23:29:20.349612 7f4665ffb640 Delete type=0 #66
|
||||
2023/11/07-23:29:29.395544 7f46649f4640 Level-0 table #72: started
|
||||
2023/11/07-23:29:29.395555 7f46649f4640 Level-0 table #72: 0 bytes OK
|
||||
2023/11/07-23:29:29.396547 7f46649f4640 Delete type=0 #70
|
||||
2023/11/07-23:29:29.396590 7f46649f4640 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:29.396624 7f46649f4640 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:06:40.400000 7f1f8cafa640 Recovering log #107
|
||||
2023/11/20-21:06:40.405266 7f1f8cafa640 Delete type=3 #105
|
||||
2023/11/20-21:06:40.405349 7f1f8cafa640 Delete type=0 #107
|
||||
2023/11/20-21:52:53.120803 7f1f7fab1640 Level-0 table #112: started
|
||||
2023/11/20-21:52:53.120825 7f1f7fab1640 Level-0 table #112: 0 bytes OK
|
||||
2023/11/20-21:52:53.122805 7f1f7fab1640 Delete type=0 #110
|
||||
2023/11/20-21:52:53.122942 7f1f7fab1640 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:52:53.122987 7f1f7fab1640 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
|
||||
@ -1,15 +1,8 @@
|
||||
2023/11/07-17:50:41.786664 7f4665ffb640 Recovering log #62
|
||||
2023/11/07-17:50:41.788546 7f4665ffb640 Delete type=0 #62
|
||||
2023/11/07-17:50:41.788559 7f4665ffb640 Delete type=3 #60
|
||||
2023/11/07-23:29:14.523160 7f46649f4640 Level-0 table #67: started
|
||||
2023/11/07-23:29:14.524102 7f46649f4640 Level-0 table #67: 1737 bytes OK
|
||||
2023/11/07-23:29:14.524964 7f46649f4640 Delete type=0 #65
|
||||
2023/11/07-23:29:14.525003 7f46649f4640 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:14.525014 7f46649f4640 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at '!actors!U5v4gFHquo0Y1SAq' @ 2 : 1
|
||||
2023/11/07-23:29:14.525016 7f46649f4640 Compacting 1@1 + 1@2 files
|
||||
2023/11/07-23:29:14.526092 7f46649f4640 Generated table #68@1: 1 keys, 1737 bytes
|
||||
2023/11/07-23:29:14.526097 7f46649f4640 Compacted 1@1 + 1@2 files => 1737 bytes
|
||||
2023/11/07-23:29:14.526856 7f46649f4640 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/11/07-23:29:14.526872 7f46649f4640 Delete type=2 #5
|
||||
2023/11/07-23:29:14.526891 7f46649f4640 Delete type=2 #67
|
||||
2023/11/07-23:29:14.541950 7f46649f4640 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 2 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:28:00.240421 7f1f86ffd640 Recovering log #103
|
||||
2023/11/19-23:28:00.246181 7f1f86ffd640 Delete type=0 #103
|
||||
2023/11/19-23:28:00.246268 7f1f86ffd640 Delete type=3 #101
|
||||
2023/11/19-23:53:02.985473 7f1f7fab1640 Level-0 table #108: started
|
||||
2023/11/19-23:53:02.985488 7f1f7fab1640 Level-0 table #108: 0 bytes OK
|
||||
2023/11/19-23:53:02.987004 7f1f7fab1640 Delete type=0 #106
|
||||
2023/11/19-23:53:02.987267 7f1f7fab1640 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:53:02.992459 7f1f7fab1640 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
packs/helper-macros/000223.ldb
Normal file
BIN
packs/helper-macros/000223.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000199
|
||||
MANIFEST-000240
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
2023/11/07-23:29:20.340266 7f4665ffb640 Recovering log #197
|
||||
2023/11/07-23:29:20.342378 7f4665ffb640 Delete type=0 #197
|
||||
2023/11/07-23:29:20.342408 7f4665ffb640 Delete type=3 #195
|
||||
2023/11/07-23:29:29.392493 7f46649f4640 Level-0 table #202: started
|
||||
2023/11/07-23:29:29.392505 7f46649f4640 Level-0 table #202: 0 bytes OK
|
||||
2023/11/07-23:29:29.393529 7f46649f4640 Delete type=0 #200
|
||||
2023/11/07-23:29:29.394661 7f46649f4640 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:29.396569 7f46649f4640 Manual compaction at level-1 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:06:40.379066 7f1f8cafa640 Recovering log #238
|
||||
2023/11/20-21:06:40.383341 7f1f8cafa640 Delete type=0 #238
|
||||
2023/11/20-21:06:40.383379 7f1f8cafa640 Delete type=3 #236
|
||||
2023/11/20-21:52:53.115026 7f1f7fab1640 Level-0 table #243: started
|
||||
2023/11/20-21:52:53.115074 7f1f7fab1640 Level-0 table #243: 0 bytes OK
|
||||
2023/11/20-21:52:53.117191 7f1f7fab1640 Delete type=0 #241
|
||||
2023/11/20-21:52:53.120794 7f1f7fab1640 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:52:53.122890 7f1f7fab1640 Manual compaction at level-1 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
2023/11/07-17:50:41.780718 7f4665ffb640 Recovering log #193
|
||||
2023/11/07-17:50:41.782723 7f4665ffb640 Delete type=3 #191
|
||||
2023/11/07-17:50:41.782737 7f4665ffb640 Delete type=0 #193
|
||||
2023/11/07-23:29:14.517951 7f46649f4640 Level-0 table #198: started
|
||||
2023/11/07-23:29:14.517966 7f46649f4640 Level-0 table #198: 0 bytes OK
|
||||
2023/11/07-23:29:14.518928 7f46649f4640 Delete type=0 #196
|
||||
2023/11/07-23:29:14.520867 7f46649f4640 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:14.524993 7f46649f4640 Manual compaction at level-1 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:28:00.222566 7f1f86ffd640 Recovering log #234
|
||||
2023/11/19-23:28:00.228468 7f1f86ffd640 Delete type=0 #234
|
||||
2023/11/19-23:28:00.228572 7f1f86ffd640 Delete type=3 #232
|
||||
2023/11/19-23:53:02.980676 7f1f7fab1640 Level-0 table #239: started
|
||||
2023/11/19-23:53:02.980736 7f1f7fab1640 Level-0 table #239: 0 bytes OK
|
||||
2023/11/19-23:53:02.982353 7f1f7fab1640 Delete type=0 #237
|
||||
2023/11/19-23:53:02.985462 7f1f7fab1640 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:53:02.987044 7f1f7fab1640 Manual compaction at level-1 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/helper-macros/MANIFEST-000240
Normal file
BIN
packs/helper-macros/MANIFEST-000240
Normal file
Binary file not shown.
Binary file not shown.
BIN
packs/module-docs/000221.ldb
Normal file
BIN
packs/module-docs/000221.ldb
Normal file
Binary file not shown.
@ -1 +1 @@
|
||||
MANIFEST-000197
|
||||
MANIFEST-000238
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
2023/11/07-23:29:20.336710 7f46667fc640 Recovering log #194
|
||||
2023/11/07-23:29:20.338673 7f46667fc640 Delete type=0 #194
|
||||
2023/11/07-23:29:20.338682 7f46667fc640 Delete type=3 #192
|
||||
2023/11/07-23:29:29.390257 7f46649f4640 Level-0 table #200: started
|
||||
2023/11/07-23:29:29.390274 7f46649f4640 Level-0 table #200: 0 bytes OK
|
||||
2023/11/07-23:29:29.391163 7f46649f4640 Delete type=0 #198
|
||||
2023/11/07-23:29:29.392479 7f46649f4640 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:29.393557 7f46649f4640 Manual compaction at level-1 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:06:40.367710 7f1f87fff640 Recovering log #236
|
||||
2023/11/20-21:06:40.373515 7f1f87fff640 Delete type=3 #234
|
||||
2023/11/20-21:06:40.373593 7f1f87fff640 Delete type=0 #236
|
||||
2023/11/20-21:52:53.112300 7f1f7fab1640 Level-0 table #241: started
|
||||
2023/11/20-21:52:53.112780 7f1f7fab1640 Level-0 table #241: 0 bytes OK
|
||||
2023/11/20-21:52:53.114883 7f1f7fab1640 Delete type=0 #239
|
||||
2023/11/20-21:52:53.120771 7f1f7fab1640 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Q4iS1LIiyy7acuaF.zvPWCYx402kk2hsE' @ 0 : 0; will stop at (end)
|
||||
2023/11/20-21:52:53.122876 7f1f7fab1640 Manual compaction at level-1 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Q4iS1LIiyy7acuaF.zvPWCYx402kk2hsE' @ 0 : 0; will stop at (end)
|
||||
|
||||
@ -1,15 +1,8 @@
|
||||
2023/11/07-17:50:41.777838 7f4666ffd640 Recovering log #190
|
||||
2023/11/07-17:50:41.779631 7f4666ffd640 Delete type=0 #190
|
||||
2023/11/07-17:50:41.779649 7f4666ffd640 Delete type=3 #188
|
||||
2023/11/07-23:29:14.515315 7f46649f4640 Level-0 table #195: started
|
||||
2023/11/07-23:29:14.516677 7f46649f4640 Level-0 table #195: 9634 bytes OK
|
||||
2023/11/07-23:29:14.517872 7f46649f4640 Delete type=0 #193
|
||||
2023/11/07-23:29:14.518953 7f46649f4640 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 0 : 0; will stop at (end)
|
||||
2023/11/07-23:29:14.518974 7f46649f4640 Manual compaction at level-1 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 0 : 0; will stop at '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 98 : 1
|
||||
2023/11/07-23:29:14.518976 7f46649f4640 Compacting 1@1 + 1@2 files
|
||||
2023/11/07-23:29:14.519779 7f46649f4640 Generated table #196@1: 6 keys, 4503 bytes
|
||||
2023/11/07-23:29:14.519792 7f46649f4640 Compacted 1@1 + 1@2 files => 4503 bytes
|
||||
2023/11/07-23:29:14.520666 7f46649f4640 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/11/07-23:29:14.520737 7f46649f4640 Delete type=2 #167
|
||||
2023/11/07-23:29:14.520824 7f46649f4640 Delete type=2 #195
|
||||
2023/11/07-23:29:14.524986 7f46649f4640 Manual compaction at level-1 from '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 98 : 1 .. '!journal.pages!Mw1g2Fx5dp4SoqVP.lhULHNp4gz9IjOR3' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:28:00.213421 7f1f877fe640 Recovering log #232
|
||||
2023/11/19-23:28:00.217882 7f1f877fe640 Delete type=0 #232
|
||||
2023/11/19-23:28:00.218006 7f1f877fe640 Delete type=3 #230
|
||||
2023/11/19-23:53:02.978275 7f1f7fab1640 Level-0 table #237: started
|
||||
2023/11/19-23:53:02.978315 7f1f7fab1640 Level-0 table #237: 0 bytes OK
|
||||
2023/11/19-23:53:02.980281 7f1f7fab1640 Delete type=0 #235
|
||||
2023/11/19-23:53:02.980581 7f1f7fab1640 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Q4iS1LIiyy7acuaF.zvPWCYx402kk2hsE' @ 0 : 0; will stop at (end)
|
||||
2023/11/19-23:53:02.982433 7f1f7fab1640 Manual compaction at level-1 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!Q4iS1LIiyy7acuaF.zvPWCYx402kk2hsE' @ 0 : 0; will stop at (end)
|
||||
|
||||
Binary file not shown.
BIN
packs/module-docs/MANIFEST-000238
Normal file
BIN
packs/module-docs/MANIFEST-000238
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
import { helpers } from './helpers.js'
|
||||
import { shim, log } from './shim.js'
|
||||
import { log } from './shim.js'
|
||||
import { requestRollFromTokens } from './helpers.js'
|
||||
import { powerEffects } from './powerEffects.js'
|
||||
|
||||
export class api {
|
||||
@ -11,8 +11,8 @@ export class api {
|
||||
static globals () {
|
||||
const moduleName = 'swade-mb-helpers'
|
||||
game.modules.get(moduleName).api = {
|
||||
DEBUG: true,
|
||||
powerEffects
|
||||
powerEffects,
|
||||
requestRollFromTokens
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,92 +1,61 @@
|
||||
import { CONST, shim } from './shim.js'
|
||||
import { shim } from './shim.js'
|
||||
|
||||
export class helpers {
|
||||
static runOnTargetOrSelectedTokens (runFunc) {
|
||||
let tokens = []
|
||||
const targets = Array.from(shim.targets)
|
||||
if (targets.length > 0) {
|
||||
tokens = targets
|
||||
} else if (shim.controlled.length > 0) {
|
||||
tokens = shim.controlled
|
||||
export async function requestRollFromTokens (tokens, rollType, rollDesc, options = {}) {
|
||||
// tokens: list of tokens to request a roll from
|
||||
// rollType: 'attribute' or 'skill
|
||||
// rollDesc: name of attribute or skill
|
||||
// options:
|
||||
// title: title for the roll dialog. Will have "- {{ token name }}"
|
||||
// appended
|
||||
// flavour: flavor text for the roll card. Defaults to title
|
||||
// mods: list of modifiers {label: "", value: 0, ignore: false}
|
||||
// modCallback: callback function that takes a token and returns a list of
|
||||
// modifiers in the same format as modifiers, above
|
||||
const requestingUser = shim.user
|
||||
const title = options?.title || `${requestingUser.name} requests a ${rollDesc} roll`
|
||||
const flavour = options?.flavour || options?.flavor || title
|
||||
const promises = []
|
||||
for (const token of tokens) {
|
||||
const owner = shim.warpgateUtil.firstOwner(token.document)
|
||||
const rollOpts = {
|
||||
title: `${title} - ${token.name}`,
|
||||
flavour
|
||||
}
|
||||
if (tokens.length > 0) {
|
||||
runFunc(tokens)
|
||||
} else {
|
||||
shim.notifications.error('Please select or target a token')
|
||||
const additionalMods = []
|
||||
if ('mods' in options) {
|
||||
for (const mod of options.mods) {
|
||||
additionalMods.push(mod)
|
||||
}
|
||||
}
|
||||
|
||||
static createEffectDocument (icon, name, durationRounds, changes) {
|
||||
const effectData = {
|
||||
icon,
|
||||
name,
|
||||
duration: { rounds: durationRounds },
|
||||
flags: {
|
||||
swade: {
|
||||
expiration: CONST.SWADE.STATUS_EFFECT_EXPIRATION.EndOfTurnPrompt,
|
||||
loseTurnOnHold: true
|
||||
}
|
||||
},
|
||||
changes
|
||||
}
|
||||
return effectData
|
||||
}
|
||||
|
||||
static createMutationWithEffect (icon, name, durationRounds, changes) {
|
||||
const effect = helpers.createEffectDocument(icon, name, durationRounds, changes)
|
||||
const mutate = {
|
||||
embedded: { ActiveEffect: {} }
|
||||
}
|
||||
mutate.embedded.ActiveEffect[name] = effect
|
||||
return mutate
|
||||
}
|
||||
|
||||
static defaultMutationOptions (name) {
|
||||
const mutateOptions = {
|
||||
name,
|
||||
permanent: true,
|
||||
description: name
|
||||
}
|
||||
return mutateOptions
|
||||
}
|
||||
|
||||
static getActorFolderByPath (path) {
|
||||
const names = path.split('/')
|
||||
if (names[0] === '') {
|
||||
names.shift()
|
||||
}
|
||||
let name = names.shift()
|
||||
let folder = shim.folders.find(f => f.name === name && !f.folder)
|
||||
while (names.length > 0) {
|
||||
name = names.shift()
|
||||
folder = folder.children.find(c => c.folder.name === name)
|
||||
folder = folder.folder
|
||||
}
|
||||
return folder
|
||||
}
|
||||
|
||||
static getActorsInFolder (inFolder) {
|
||||
const prefixStack = ['']
|
||||
const actors = {}
|
||||
const folderStack = [inFolder]
|
||||
|
||||
while (folderStack.length > 0) {
|
||||
const prefix = prefixStack.shift()
|
||||
const folder = folderStack.shift()
|
||||
for (const actor of folder.contents) {
|
||||
if (
|
||||
shim.user.isGM || actor.testUserPermission(
|
||||
shim.user, CONST.FOUNDRY.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER)
|
||||
) {
|
||||
actors[`${prefix}${actor.name}`] = actor
|
||||
if ('modCallback' in options) {
|
||||
const tokenMods = await options.modCallback(token)
|
||||
for (const tm of tokenMods) {
|
||||
additionalMods.push(tm)
|
||||
}
|
||||
}
|
||||
for (const child of folder.children) {
|
||||
const newPrefix = `${prefix}${child.folder.name} | `
|
||||
prefixStack.push(newPrefix)
|
||||
folderStack.push(child.folder)
|
||||
if (additionalMods.length > 0) {
|
||||
rollOpts.additionalMods = additionalMods
|
||||
}
|
||||
promises.push(shim.socket.executeAsUser(requestTokenRoll, owner.id,
|
||||
token.scene.id, token.id, rollType, rollDesc, rollOpts))
|
||||
}
|
||||
return actors
|
||||
}
|
||||
const results = await Promise.allSettled(promises)
|
||||
return results
|
||||
}
|
||||
|
||||
export async function requestTokenRoll (
|
||||
sceneId, tokenId, rollType, rollDesc, options
|
||||
) {
|
||||
const scene = shim.scenes.get(sceneId)
|
||||
const token = scene.tokens.get(tokenId)
|
||||
let rollFunc = 'rollAttribute'
|
||||
let rollId = rollDesc.toLowerCase()
|
||||
if (rollType === 'skill') {
|
||||
rollFunc = 'rollSkill'
|
||||
rollId = token.actor.items.filter(i => i.type === 'skill').find(i => (
|
||||
i.system.swid === rollDesc.toLowerCase() ||
|
||||
i.name.toLowerCase() === rollDesc.toLowerCase()))?.id
|
||||
}
|
||||
const result = await token.actor[rollFunc](rollId, options)
|
||||
return { sceneId, tokenId, result }
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { api } from './api.js'
|
||||
import { requestTokenRoll } from './helpers.js'
|
||||
import { shapeChangeOnDismiss } from './powerEffects.js'
|
||||
import { log } from './shim.js'
|
||||
import { log, shim } from './shim.js'
|
||||
|
||||
const moduleName = 'swade-mb-helpers'
|
||||
|
||||
@ -17,6 +18,13 @@ Hooks.on('setup', api.registerFunctions)
|
||||
|
||||
Hooks.on('ready', () => {
|
||||
_checkModule('warpgate')
|
||||
_checkModule('socketlib')
|
||||
log('Initialized SWADE MB Helpers')
|
||||
warpgate.event.watch(warpgate.EVENT.DISMISS, shapeChangeOnDismiss)
|
||||
})
|
||||
|
||||
Hooks.on('socketlib.ready', () => {
|
||||
const socket = socketlib.registerModule('swade-mb-helpers')
|
||||
socket.register('requestTokenRoll', requestTokenRoll)
|
||||
shim._socket = socket
|
||||
})
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { CONST, log, shim } from './shim.js'
|
||||
import { requestRollFromTokens } from './helpers.js'
|
||||
|
||||
class PowerEffect {
|
||||
constructor (token, targets) {
|
||||
@ -545,6 +546,46 @@ class EntangleEffect extends TargetedPowerEffect {
|
||||
}
|
||||
}
|
||||
|
||||
class HavocEffect extends TargetedPowerEffect {
|
||||
get name () {
|
||||
return 'Havoc'
|
||||
}
|
||||
|
||||
get baseDurationRounds () {
|
||||
return 1
|
||||
}
|
||||
|
||||
async prepResult () {
|
||||
this.raise = (this.buttons === 'raise')
|
||||
this.effectDocs.unshift(shim.getStatus('SWADE.Distr', 'Distracted'))
|
||||
}
|
||||
|
||||
async applyResult () {
|
||||
await super.applyResult()
|
||||
await shim.wait(1000)
|
||||
|
||||
const resistMods = function (token) {
|
||||
const mods = []
|
||||
if (token.actor.effects.find(e => e.name === 'Flying')) {
|
||||
mods.push({ label: 'Flying', value: -2 })
|
||||
}
|
||||
return mods
|
||||
}
|
||||
|
||||
const options = {
|
||||
title: 'Resisting Havoc!',
|
||||
flavour: 'Havoc!',
|
||||
mods: [],
|
||||
modCallback: resistMods
|
||||
}
|
||||
if (this.raise) {
|
||||
options.mods.push({ label: 'vs. Raise', value: -2 })
|
||||
}
|
||||
|
||||
await requestRollFromTokens(this.targets, 'attribute', 'strength', options)
|
||||
}
|
||||
}
|
||||
|
||||
class IntangibilityEffect extends TargetedPowerEffect {
|
||||
get name () {
|
||||
return 'Intangility'
|
||||
@ -1349,6 +1390,7 @@ const PowerClasses = {
|
||||
'detectconceal-aracana': DetectConcealArcanaEffect,
|
||||
disguise: DisguiseEffect,
|
||||
entangle: EntangleEffect,
|
||||
havoc: HavocEffect,
|
||||
intangibility: IntangibilityEffect,
|
||||
invisibility: InvisibilityEffect,
|
||||
'lower trait': BoostLowerTraitEffect,
|
||||
|
||||
@ -21,6 +21,10 @@ export class shim {
|
||||
return Actor
|
||||
}
|
||||
|
||||
static get canvas () {
|
||||
return game.canvas
|
||||
}
|
||||
|
||||
static get folders () {
|
||||
return game.folders
|
||||
}
|
||||
@ -37,6 +41,10 @@ export class shim {
|
||||
return game.user
|
||||
}
|
||||
|
||||
static get users () {
|
||||
return game.users
|
||||
}
|
||||
|
||||
static get notifications () {
|
||||
return ui.notifications
|
||||
}
|
||||
@ -49,6 +57,12 @@ export class shim {
|
||||
return game.scenes
|
||||
}
|
||||
|
||||
static _socket = null
|
||||
|
||||
static get socket () {
|
||||
return shim._socket
|
||||
}
|
||||
|
||||
static mergeObject (...args) {
|
||||
return mergeObject(...args)
|
||||
}
|
||||
@ -102,6 +116,10 @@ export class shim {
|
||||
await warpgate.mutate(token.document, mutation, {}, mutateOptions)
|
||||
}
|
||||
|
||||
static wait (ms) {
|
||||
return warpgate.wait(ms)
|
||||
}
|
||||
|
||||
static warpgateMenu (menuData, menuOptions) {
|
||||
return warpgate.menu(menuData, menuOptions)
|
||||
}
|
||||
@ -114,6 +132,10 @@ export class shim {
|
||||
return warpgate.spawnAt(...args)
|
||||
}
|
||||
|
||||
static get warpgateUtil () {
|
||||
return warpgate.util
|
||||
}
|
||||
|
||||
static getActorFolderByPath (path) {
|
||||
const names = path.split('/')
|
||||
if (names[0] === '') {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user