diff --git a/CHANGELOG.md b/CHANGELOG.md index e598133..f4d6bd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,26 @@ 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). -## [Unreleased] +## [2.3.1] 2023-12-26 + +### Added + +- Data file for the Torch module +- Import file for Token Variant Art's global effect mappings +- Macro: Request fear check specialization macro +- Macro: Fear Table to call the new fearTable api endpoint +- API: rulesVersion property +- API: fearTable(actor) calls the relevant premium core rules module's fear + table +- API: added requestFearRollFromTokens special helper +- Trait roll hooks for: + - Glow/Shroud + - Range modifiers + +### Changed + +- added a summary chat message for the roll results to requested rolls. +- added a target number option to requested rolls. ## [2.3.0] 2023-12-19 diff --git a/config/token-variants-global-mappings.json b/config/token-variants-global-mappings.json new file mode 100755 index 0000000..a0f335d --- /dev/null +++ b/config/token-variants-global-mappings.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/config/torch_swade.json b/config/torch_swade.json new file mode 100644 index 0000000..2993439 --- /dev/null +++ b/config/torch_swade.json @@ -0,0 +1,111 @@ +{ + "swade": { + "system": "swade", + "topology": "standard", + "quantity" : "quantity", + "aliases": { + "Candle (1 hr, 2\" radius)": "Candle", + "Torch (1 hour, 4\" radius)": "Torch", + "Lantern, bullseye (10\" cone)": "Lantern, bullseye", + "Lantern, hooded (6\" radius)": "Lantern, hooded" + }, + "sources": { + "Candle (1 hr, 2\" radius)": { + "states": 2, + "light": [ + { + "bright": 0.5, "dim": 2, "angle": 360, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + } + ] + }, + "Everburning Torch": { + "states": 2, + "light": [ + { + "bright": 0.5, "dim": 4, "angle": 360, "color": "#4dfbc2", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + } + ] + }, + "Lantern, bullseye (10\" cone)": { + "states": 3, + "light": [ + { + "bright": 4, "dim": 10, "angle": 180, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + }, + { + "bright": 0, "dim": 3, "angle": 180, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + } + ] + }, + "Lantern, hooded (6\" radius)": { + "states": 2, + "light": [ + { + "bright": 3, "dim": 6, "angle": 360, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + } + ] + }, + "Torch (1 hour, 4\" radius)": { + "states": 2, + "light": [ + { + "bright": 0.5, "dim": 4, "angle": 360, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 5, "reverse": false } + } + ] + }, + "Sunrod": { + "states": 2, + "light": [ + { + "bright": 6, "dim": 12, "angle": 360, "color": "#f9e380", "alpha": 0.15, + "animation": { "type": "sunburst", "speed": 1, "intensity": 3, "reverse": false } + } + ] + }, + "Lamp, Small (3\" radius)": { + "states": 2, + "light": [ + { + "bright": 1, "dim": 3, "angle": 360, "color": "#e9c40c", "alpha": 0.15, + "animation": { "type": "torch", "speed": 1, "intensity": 3, "reverse": false } + } + ] + }, + "Light / Darkness": { + "states": 3, + "light": [ + { + "bright": 1, "dim": 3, "angle": 360, "color": "#e9c40c", "alpha": 0.15, + "animation": { "type": "torch", "speed": 1, "intensity": 3, "reverse": false } + }, + { + "bright": 3, "dim": 10, "angle": 120, "color": "#e68805", "alpha": 0.15, + "animation": { "type": "torch", "speed": 2, "intensity": 4, "reverse": false } + } + ] + }, + "Lantern of Revealing": { + "light": [ + { + "bright": 1, "dim": 5, "angle": 360, "color": "#a80092", "alpha": 0.15, + "animation": { "type": "starlight", "speed": 1, "intensity": 3, "reverse": false } + } + ] + }, + "Robe of Scintillating Colors": { + "light": [ + { + "bright": 3, "dim": 5, "angle": 360, "color": "#888888", "alpha": 0.15, + "animation": { "type": "rainbowswirl", "speed": 1, "intensity": 2, "reverse": false } + } + ] + } + } + } +} diff --git a/macros/requestFearRoll.js b/macros/requestFearRoll.js new file mode 100644 index 0000000..0bc063c --- /dev/null +++ b/macros/requestFearRoll.js @@ -0,0 +1,39 @@ +const requestFearRollFromTokens = 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 Fear roll from ${tokens.map(t => t.name).join(', ')}` }, + { type: 'number', label: 'Fear Check Penalty', options: 0 } + ], + 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() diff --git a/macros/requestRoll.js b/macros/requestRoll.js index 4372f1a..57aefdc 100644 --- a/macros/requestRoll.js +++ b/macros/requestRoll.js @@ -19,7 +19,8 @@ async function main () { options: [] }, { type: 'number', label: 'Roll Modifier', options: 0 }, - { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' } + { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' }, + { type: 'number', label: 'Target Number', options: 4 } ], buttons: [ { label: 'Request roll', value: 'ok', default: true }, @@ -59,7 +60,8 @@ async function main () { const rollParts = result.inputs[1].split('|') const rollType = (rollParts[0] === 'a' ? 'attribute' : 'skill') const rollDesc = rollParts[1] - const options = {} + const targetNumber = result.inputs[4] || 4 + const options = { targetNumber } if (rollMod !== 0) { options.mods = [{ label: rollModDesc, value: rollMod }] } diff --git a/module.json b/module.json index cc46075..10b10c7 100644 --- a/module.json +++ b/module.json @@ -110,7 +110,8 @@ }, { "id": "socketlib", - "type": "module" + "type": "module", + "compatibility": {} } ], "recommends": [ @@ -123,6 +124,10 @@ "id": "torch", "type": "module", "compatibility": {} + }, + { + "id": "JB2A_DnD5e", + "type": "module" } ] }, @@ -131,4 +136,4 @@ "download": "https://git.bloy.org/foundryvtt/swade-mb-helpers/archive/main.zip", "license": "./LICENSE", "readme": "./README.md" -} +} \ No newline at end of file diff --git a/packs/common-actions/CURRENT b/packs/common-actions/CURRENT index 23b73d9..1a84852 100644 --- a/packs/common-actions/CURRENT +++ b/packs/common-actions/CURRENT @@ -1 +1 @@ -MANIFEST-000014 +MANIFEST-000002 diff --git a/packs/common-actions/LOG b/packs/common-actions/LOG index d59dd93..3203f10 100644 --- a/packs/common-actions/LOG +++ b/packs/common-actions/LOG @@ -1,3 +1,5 @@ -2023/12/19-22:11:46.585866 7f40dd7bc700 Recovering log #12 -2023/12/19-22:11:46.611108 7f40dd7bc700 Delete type=0 #12 -2023/12/19-22:11:46.611132 7f40dd7bc700 Delete type=3 #10 +2023/12/26-22:07:49.642359 7f460bfff700 Delete type=3 #1 +2023/12/26-22:07:49.645609 7f4609ffb700 Level-0 table #5: started +2023/12/26-22:07:49.649148 7f4609ffb700 Level-0 table #5: 12215 bytes OK +2023/12/26-22:07:49.652094 7f4609ffb700 Delete type=0 #3 +2023/12/26-22:07:49.652273 7f4609ffb700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) diff --git a/packs/common-actions/LOG.old b/packs/common-actions/LOG.old deleted file mode 100644 index 8d8b6ad..0000000 --- a/packs/common-actions/LOG.old +++ /dev/null @@ -1,8 +0,0 @@ -2023/12/19-14:25:58.734016 7fb0acf3b700 Recovering log #8 -2023/12/19-14:25:58.748444 7fb0acf3b700 Delete type=3 #6 -2023/12/19-14:25:58.748474 7fb0acf3b700 Delete type=0 #8 -2023/12/19-22:08:59.600432 7fb086400700 Level-0 table #13: started -2023/12/19-22:08:59.600452 7fb086400700 Level-0 table #13: 0 bytes OK -2023/12/19-22:08:59.612412 7fb086400700 Delete type=0 #11 -2023/12/19-22:08:59.648733 7fb086400700 Manual compaction at level-0 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) -2023/12/19-22:08:59.648868 7fb086400700 Manual compaction at level-1 from '!folders!0nDRFmMBs5DBJU9M' @ 72057594037927935 : 1 .. '!items.effects!RC1Nz6iph8wPPK1B.g9W5hJisq3MsCpZW' @ 0 : 0; will stop at (end) diff --git a/packs/common-actions/MANIFEST-000002 b/packs/common-actions/MANIFEST-000002 new file mode 100644 index 0000000..0916a64 Binary files /dev/null and b/packs/common-actions/MANIFEST-000002 differ diff --git a/packs/common-actions/MANIFEST-000014 b/packs/common-actions/MANIFEST-000014 deleted file mode 100644 index 5d83e41..0000000 Binary files a/packs/common-actions/MANIFEST-000014 and /dev/null differ diff --git a/packs/gear/CURRENT b/packs/gear/CURRENT index 23b73d9..1a84852 100644 --- a/packs/gear/CURRENT +++ b/packs/gear/CURRENT @@ -1 +1 @@ -MANIFEST-000014 +MANIFEST-000002 diff --git a/packs/gear/LOG b/packs/gear/LOG index 5eefaa0..bb3ca1a 100644 --- a/packs/gear/LOG +++ b/packs/gear/LOG @@ -1,3 +1,5 @@ -2023/12/19-22:11:46.716627 7f5d39ffb700 Recovering log #12 -2023/12/19-22:11:46.739685 7f5d39ffb700 Delete type=0 #12 -2023/12/19-22:11:46.739711 7f5d39ffb700 Delete type=3 #10 +2023/12/26-22:07:50.435159 7f7f1dfbe700 Delete type=3 #1 +2023/12/26-22:07:50.437815 7f7c7ffff700 Level-0 table #5: started +2023/12/26-22:07:50.440822 7f7c7ffff700 Level-0 table #5: 6787 bytes OK +2023/12/26-22:07:50.443689 7f7c7ffff700 Delete type=0 #3 +2023/12/26-22:07:50.443866 7f7c7ffff700 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end) diff --git a/packs/gear/LOG.old b/packs/gear/LOG.old deleted file mode 100644 index 40a24c7..0000000 --- a/packs/gear/LOG.old +++ /dev/null @@ -1,8 +0,0 @@ -2023/12/19-14:25:58.761898 7fb0acf3b700 Recovering log #8 -2023/12/19-14:25:58.781218 7fb0acf3b700 Delete type=3 #6 -2023/12/19-14:25:58.781255 7fb0acf3b700 Delete type=0 #8 -2023/12/19-22:08:59.648947 7fb086400700 Level-0 table #13: started -2023/12/19-22:08:59.648972 7fb086400700 Level-0 table #13: 0 bytes OK -2023/12/19-22:08:59.658595 7fb086400700 Delete type=0 #11 -2023/12/19-22:08:59.677223 7fb086400700 Manual compaction at level-0 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end) -2023/12/19-22:08:59.677310 7fb086400700 Manual compaction at level-1 from '!items!JWyBQe4tnOYljFAF' @ 72057594037927935 : 1 .. '!items!tWWSfEMmLmws6Yb1' @ 0 : 0; will stop at (end) diff --git a/packs/gear/MANIFEST-000002 b/packs/gear/MANIFEST-000002 new file mode 100644 index 0000000..aa2beac Binary files /dev/null and b/packs/gear/MANIFEST-000002 differ diff --git a/packs/gear/MANIFEST-000014 b/packs/gear/MANIFEST-000014 deleted file mode 100644 index 817e197..0000000 Binary files a/packs/gear/MANIFEST-000014 and /dev/null differ diff --git a/packs/helper-actors/CURRENT b/packs/helper-actors/CURRENT index 23b73d9..1a84852 100644 --- a/packs/helper-actors/CURRENT +++ b/packs/helper-actors/CURRENT @@ -1 +1 @@ -MANIFEST-000014 +MANIFEST-000002 diff --git a/packs/helper-actors/LOG b/packs/helper-actors/LOG index 29a0553..171c8bb 100644 --- a/packs/helper-actors/LOG +++ b/packs/helper-actors/LOG @@ -1,3 +1,5 @@ -2023/12/19-22:11:46.843641 7ff2615a2700 Recovering log #12 -2023/12/19-22:11:46.864924 7ff2615a2700 Delete type=0 #12 -2023/12/19-22:11:46.864950 7ff2615a2700 Delete type=3 #10 +2023/12/26-22:07:51.015156 7fb5f1747700 Delete type=3 #1 +2023/12/26-22:07:51.017707 7fb5caffd700 Level-0 table #5: started +2023/12/26-22:07:51.020762 7fb5caffd700 Level-0 table #5: 1751 bytes OK +2023/12/26-22:07:51.023614 7fb5caffd700 Delete type=0 #3 +2023/12/26-22:07:51.023794 7fb5caffd700 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end) diff --git a/packs/helper-actors/LOG.old b/packs/helper-actors/LOG.old deleted file mode 100644 index 73332a3..0000000 --- a/packs/helper-actors/LOG.old +++ /dev/null @@ -1,8 +0,0 @@ -2023/12/19-14:25:58.750811 7fb087fff700 Recovering log #8 -2023/12/19-14:25:58.759586 7fb087fff700 Delete type=3 #6 -2023/12/19-14:25:58.759616 7fb087fff700 Delete type=0 #8 -2023/12/19-22:08:59.612497 7fb086400700 Level-0 table #13: started -2023/12/19-22:08:59.612518 7fb086400700 Level-0 table #13: 0 bytes OK -2023/12/19-22:08:59.622048 7fb086400700 Delete type=0 #11 -2023/12/19-22:08:59.648768 7fb086400700 Manual compaction at level-0 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end) -2023/12/19-22:08:59.648884 7fb086400700 Manual compaction at level-1 from '!actors!U5v4gFHquo0Y1SAq' @ 72057594037927935 : 1 .. '!actors!U5v4gFHquo0Y1SAq' @ 0 : 0; will stop at (end) diff --git a/packs/helper-actors/MANIFEST-000002 b/packs/helper-actors/MANIFEST-000002 new file mode 100644 index 0000000..e01a079 Binary files /dev/null and b/packs/helper-actors/MANIFEST-000002 differ diff --git a/packs/helper-actors/MANIFEST-000014 b/packs/helper-actors/MANIFEST-000014 deleted file mode 100644 index cf98f38..0000000 Binary files a/packs/helper-actors/MANIFEST-000014 and /dev/null differ diff --git a/packs/helper-macros/000005.ldb b/packs/helper-macros/000005.ldb index 4f5464a..a77123e 100644 Binary files a/packs/helper-macros/000005.ldb and b/packs/helper-macros/000005.ldb differ diff --git a/packs/helper-macros/CURRENT b/packs/helper-macros/CURRENT index 23b73d9..1a84852 100644 --- a/packs/helper-macros/CURRENT +++ b/packs/helper-macros/CURRENT @@ -1 +1 @@ -MANIFEST-000014 +MANIFEST-000002 diff --git a/packs/helper-macros/LOG b/packs/helper-macros/LOG index 948bac9..373eea1 100644 --- a/packs/helper-macros/LOG +++ b/packs/helper-macros/LOG @@ -1,3 +1,5 @@ -2023/12/19-22:11:46.967222 7fb6ee7bf700 Recovering log #12 -2023/12/19-22:11:46.993517 7fb6ee7bf700 Delete type=0 #12 -2023/12/19-22:11:46.993540 7fb6ee7bf700 Delete type=3 #10 +2023/12/26-22:07:51.541685 7f8180fbd700 Delete type=3 #1 +2023/12/26-22:07:51.544374 7f817ffbb700 Level-0 table #5: started +2023/12/26-22:07:51.547717 7f817ffbb700 Level-0 table #5: 13110 bytes OK +2023/12/26-22:07:51.550539 7f817ffbb700 Delete type=0 #3 +2023/12/26-22:07:51.550708 7f817ffbb700 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end) diff --git a/packs/helper-macros/LOG.old b/packs/helper-macros/LOG.old deleted file mode 100644 index eb01f08..0000000 --- a/packs/helper-macros/LOG.old +++ /dev/null @@ -1,8 +0,0 @@ -2023/12/19-14:25:58.719315 7fb087fff700 Recovering log #8 -2023/12/19-14:25:58.732527 7fb087fff700 Delete type=3 #6 -2023/12/19-14:25:58.732555 7fb087fff700 Delete type=0 #8 -2023/12/19-22:08:59.638378 7fb086400700 Level-0 table #13: started -2023/12/19-22:08:59.638400 7fb086400700 Level-0 table #13: 0 bytes OK -2023/12/19-22:08:59.648647 7fb086400700 Delete type=0 #11 -2023/12/19-22:08:59.648837 7fb086400700 Manual compaction at level-0 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end) -2023/12/19-22:08:59.677175 7fb086400700 Manual compaction at level-1 from '!folders!hIbrWxg1nDutCSwt' @ 72057594037927935 : 1 .. '!macros!wU2mAUnw3RW9qMT8' @ 0 : 0; will stop at (end) diff --git a/packs/helper-macros/MANIFEST-000002 b/packs/helper-macros/MANIFEST-000002 new file mode 100644 index 0000000..cedf5a9 Binary files /dev/null and b/packs/helper-macros/MANIFEST-000002 differ diff --git a/packs/helper-macros/MANIFEST-000014 b/packs/helper-macros/MANIFEST-000014 deleted file mode 100644 index ee8985e..0000000 Binary files a/packs/helper-macros/MANIFEST-000014 and /dev/null differ diff --git a/packs/helper-macros/_source/Fear_Table_S6HY6RqjPTt0z0yY.json b/packs/helper-macros/_source/Fear_Table_S6HY6RqjPTt0z0yY.json new file mode 100644 index 0000000..dae40e3 --- /dev/null +++ b/packs/helper-macros/_source/Fear_Table_S6HY6RqjPTt0z0yY.json @@ -0,0 +1,25 @@ +{ + "name": "Fear Table", + "type": "script", + "_id": "S6HY6RqjPTt0z0yY", + "author": "sVoCvBU1knmXzoYe", + "img": "icons/magic/death/undead-ghost-scream-teal.webp", + "scope": "global", + "command": "game.modules.get('swade-mb-helpers').api.fearTable(actor)", + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703096862424, + "modifiedTime": 1703096940207, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!macros!S6HY6RqjPTt0z0yY" +} diff --git a/packs/helper-macros/_source/Request_Fear_Check_qQLM79NpAuilKFrh.json b/packs/helper-macros/_source/Request_Fear_Check_qQLM79NpAuilKFrh.json new file mode 100644 index 0000000..3077ea9 --- /dev/null +++ b/packs/helper-macros/_source/Request_Fear_Check_qQLM79NpAuilKFrh.json @@ -0,0 +1,25 @@ +{ + "name": "Request Fear Check", + "type": "script", + "_id": "qQLM79NpAuilKFrh", + "author": "sVoCvBU1knmXzoYe", + "img": "icons/magic/death/skull-energy-light-white.webp", + "scope": "global", + "command": "const requestFearRollFromTokens = game.modules.get('swade-mb-helpers').api.requestFearRollFromTokens\n\nasync function main () {\n let tokens = Array.from(game.user.targets)\n if (tokens.length < 1) {\n tokens = canvas.tokens.controlled\n }\n if (tokens.length < 1) {\n ui.notifications.error('Please target or select some tokens')\n return\n }\n\n const menuData = {\n inputs: [\n { type: 'info', label: `Requesting Fear roll from ${tokens.map(t => t.name).join(', ')}` },\n { type: 'number', label: 'Fear Check Penalty', options: 0 }\n ],\n buttons: [\n { label: 'Request roll', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = {\n title: 'Request Fear roll...'\n }\n const result = await warpgate.menu(menuData, menuConfig)\n\n if (result.buttons !== 'ok') {\n return\n }\n console.log(result)\n const fear = result.inputs[1] || 0\n const targetNumber = 4\n const options = { targetNumber, fear }\n\n requestFearRollFromTokens(tokens, options)\n}\n\nmain()", + "folder": null, + "sort": 0, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703356535979, + "modifiedTime": 1703357189587, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!macros!qQLM79NpAuilKFrh" +} diff --git a/packs/helper-macros/_source/Request_Notice_Roll_pnLnFrfTTJeodFRy.json b/packs/helper-macros/_source/Request_Notice_Roll_pnLnFrfTTJeodFRy.json index 56853b4..5b43ad5 100644 --- a/packs/helper-macros/_source/Request_Notice_Roll_pnLnFrfTTJeodFRy.json +++ b/packs/helper-macros/_source/Request_Notice_Roll_pnLnFrfTTJeodFRy.json @@ -4,7 +4,7 @@ "scope": "global", "author": "sVoCvBU1knmXzoYe", "img": "icons/sundries/gaming/dice-pair-white-green.webp", - "command": "const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens\n\nconst traitName = 'Notice'\nconst traitType = 'skill' // or 'attribute'\n\nasync function main () {\n let tokens = Array.from(game.user.targets)\n if (tokens.length < 1) {\n tokens = canvas.tokens.controlled\n }\n if (tokens.length < 1) {\n ui.notifications.error('Please target or select some tokens')\n return\n }\n\n const menuData = {\n inputs: [\n { type: 'info', label: `Requesting roll from ${tokens.map(t => t.name).join(', ')}` },\n {\n type: 'info',\n label: `Requesting a ${traitName} roll`\n },\n { type: 'number', label: 'Roll Modifier', options: 0 },\n { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' }\n ],\n buttons: [\n { label: 'Request roll', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = {\n title: `Request ${traitName} roll...`\n }\n const result = await warpgate.menu(menuData, menuConfig)\n\n if (result.buttons !== 'ok') {\n return\n }\n console.log(result)\n const rollMod = result.inputs[2]\n const rollModDesc = result.inputs[3]\n const rollType = traitType\n const rollDesc = traitName\n const options = {}\n if (rollMod !== 0) {\n options.mods = [{ label: rollModDesc, value: rollMod }]\n }\n\n requestRollFromTokens(tokens, rollType, rollDesc, options)\n}\n\nmain()", + "command": "const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens\n\nconst traitName = 'Notice'\nconst traitType = 'skill' // or 'attribute'\n\nasync function main () {\n let tokens = Array.from(game.user.targets)\n if (tokens.length < 1) {\n tokens = canvas.tokens.controlled\n }\n if (tokens.length < 1) {\n ui.notifications.error('Please target or select some tokens')\n return\n }\n\n const menuData = {\n inputs: [\n { type: 'info', label: `Requesting roll from ${tokens.map(t => t.name).join(', ')}` },\n {\n type: 'info',\n label: `Requesting a ${traitName} roll`\n },\n { type: 'number', label: 'Roll Modifier', options: 0 },\n { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' },\n { type: 'number', label: 'Target Number', options: 4 },\n ],\n buttons: [\n { label: 'Request roll', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = {\n title: `Request ${traitName} roll...`\n }\n const result = await warpgate.menu(menuData, menuConfig)\n\n if (result.buttons !== 'ok') {\n return\n }\n console.log(result)\n const rollMod = result.inputs[2]\n const rollModDesc = result.inputs[3]\n const rollType = traitType\n const rollDesc = traitName\n const targetNumber = result.inputs[4] || 4\n const options = {targetNumber}\n if (rollMod !== 0) {\n options.mods = [{ label: rollModDesc, value: rollMod }]\n }\n\n requestRollFromTokens(tokens, rollType, rollDesc, options)\n}\n\nmain()", "folder": null, "ownership": { "default": 0, @@ -18,7 +18,7 @@ "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1700430548162, - "modifiedTime": 1702959790712, + "modifiedTime": 1703297741362, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "pnLnFrfTTJeodFRy", diff --git a/packs/helper-macros/_source/Request_Roll_G9ksuYJo1512PTo9.json b/packs/helper-macros/_source/Request_Roll_G9ksuYJo1512PTo9.json index 3cae153..e8f208e 100644 --- a/packs/helper-macros/_source/Request_Roll_G9ksuYJo1512PTo9.json +++ b/packs/helper-macros/_source/Request_Roll_G9ksuYJo1512PTo9.json @@ -4,7 +4,7 @@ "scope": "global", "author": "R9ZgY0IvWl8ovIuT", "img": "icons/sundries/gaming/dice-runed-tan.webp", - "command": "const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens\n\nasync function main () {\n let tokens = Array.from(game.user.targets)\n if (tokens.length < 1) {\n tokens = canvas.tokens.controlled\n }\n if (tokens.length < 1) {\n ui.notifications.error('Please target or select some tokens')\n return\n }\n\n const menuData = {\n inputs: [\n { type: 'info', label: `Requesting roll from ${tokens.map(t => t.name).join(', ')}` },\n {\n type: 'select',\n label: 'Trait to roll',\n options: []\n },\n { type: 'number', label: 'Roll Modifier', options: 0 },\n { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' }\n ],\n buttons: [\n { label: 'Request roll', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = {\n title: 'Request roll...'\n }\n for (const attribute of ['Agility', 'Smarts', 'Spirit', 'Strength', 'Vigor']) {\n menuData.inputs[1].options.push(\n { html: `Attribute | ${attribute}`, value: `a|${attribute}` }\n )\n }\n const skillSet = new Set()\n for (const token of tokens) {\n const skills = token.actor.items.filter(i => i.type === 'skill' &&\n !['Untrained', 'Unskilled Attempt'].includes(i.name))\n for (const skill of skills) {\n skillSet.add(skill.name)\n }\n }\n for (const skill of Array.from(skillSet).sort()) {\n menuData.inputs[1].options.push(\n { html: `Skill | ${skill}`, value: `s|${skill}` })\n }\n menuData.inputs[1].options.push(\n { html: 'Skill | Untrained', value: 's|NOSKILL' })\n const result = await warpgate.menu(menuData, menuConfig)\n\n if (result.buttons !== 'ok') {\n return\n }\n console.log(result)\n const rollMod = result.inputs[2]\n const rollModDesc = result.inputs[3]\n const rollParts = result.inputs[1].split('|')\n const rollType = (rollParts[0] === 'a' ? 'attribute' : 'skill')\n const rollDesc = rollParts[1]\n const options = {}\n if (rollMod !== 0) {\n options.mods = [{ label: rollModDesc, value: rollMod }]\n }\n\n requestRollFromTokens(tokens, rollType, rollDesc, options)\n}\n\nmain()", + "command": "const requestRollFromTokens = game.modules.get('swade-mb-helpers').api.requestRollFromTokens\n\nasync function main () {\n let tokens = Array.from(game.user.targets)\n if (tokens.length < 1) {\n tokens = canvas.tokens.controlled\n }\n if (tokens.length < 1) {\n ui.notifications.error('Please target or select some tokens')\n return\n }\n\n const menuData = {\n inputs: [\n { type: 'info', label: `Requesting roll from ${tokens.map(t => t.name).join(', ')}` },\n {\n type: 'select',\n label: 'Trait to roll',\n options: []\n },\n { type: 'number', label: 'Roll Modifier', options: 0 },\n { type: 'text', label: 'Roll Modifier Description', options: 'Roll Modifier' },\n { type: 'number', label: 'Target Number', options: 4 },\n ],\n buttons: [\n { label: 'Request roll', value: 'ok', default: true },\n { label: 'Cancel', value: 'cancel' }\n ]\n }\n const menuConfig = {\n title: 'Request roll...'\n }\n for (const attribute of ['Agility', 'Smarts', 'Spirit', 'Strength', 'Vigor']) {\n menuData.inputs[1].options.push(\n { html: `Attribute | ${attribute}`, value: `a|${attribute}` }\n )\n }\n const skillSet = new Set()\n for (const token of tokens) {\n const skills = token.actor.items.filter(i => i.type === 'skill' &&\n !['Untrained', 'Unskilled Attempt'].includes(i.name))\n for (const skill of skills) {\n skillSet.add(skill.name)\n }\n }\n for (const skill of Array.from(skillSet).sort()) {\n menuData.inputs[1].options.push(\n { html: `Skill | ${skill}`, value: `s|${skill}` })\n }\n menuData.inputs[1].options.push(\n { html: 'Skill | Untrained', value: 's|NOSKILL' })\n const result = await warpgate.menu(menuData, menuConfig)\n\n if (result.buttons !== 'ok') {\n return\n }\n console.log(result)\n const rollMod = result.inputs[2]\n const rollModDesc = result.inputs[3]\n const rollParts = result.inputs[1].split('|')\n const rollType = (rollParts[0] === 'a' ? 'attribute' : 'skill')\n const rollDesc = rollParts[1]\n const targetNumber = result.inputs[4] || 4\n const options = {targetNumber}\n if (rollMod !== 0) {\n options.mods = [{ label: rollModDesc, value: rollMod }]\n }\n\n requestRollFromTokens(tokens, rollType, rollDesc, options)\n}\n\nmain()", "folder": null, "ownership": { "default": 0, @@ -18,7 +18,7 @@ "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1700430548162, - "modifiedTime": 1702959790712, + "modifiedTime": 1703297742414, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "G9ksuYJo1512PTo9", diff --git a/packs/module-docs/000005.ldb b/packs/module-docs/000005.ldb new file mode 100644 index 0000000..b66ed6b Binary files /dev/null and b/packs/module-docs/000005.ldb differ diff --git a/packs/module-docs/000014.ldb b/packs/module-docs/000014.ldb deleted file mode 100644 index ae757ca..0000000 Binary files a/packs/module-docs/000014.ldb and /dev/null differ diff --git a/packs/module-docs/CURRENT b/packs/module-docs/CURRENT index 42c62b6..1a84852 100644 --- a/packs/module-docs/CURRENT +++ b/packs/module-docs/CURRENT @@ -1 +1 @@ -MANIFEST-000015 +MANIFEST-000002 diff --git a/packs/module-docs/LOG b/packs/module-docs/LOG index 614cd03..44cd61f 100644 --- a/packs/module-docs/LOG +++ b/packs/module-docs/LOG @@ -1,3 +1,5 @@ -2023/12/19-22:11:47.107915 7f81967fc700 Recovering log #12 -2023/12/19-22:11:47.129799 7f81967fc700 Delete type=0 #12 -2023/12/19-22:11:47.129819 7f81967fc700 Delete type=3 #10 +2023/12/26-22:07:52.151167 7f49617be700 Delete type=3 #1 +2023/12/26-22:07:52.153966 7f495ffbb700 Level-0 table #5: started +2023/12/26-22:07:52.157487 7f495ffbb700 Level-0 table #5: 15582 bytes OK +2023/12/26-22:07:52.160656 7f495ffbb700 Delete type=0 #3 +2023/12/26-22:07:52.160808 7f495ffbb700 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!w4TImRTAiNiqDWeL.vQhO6BVdKZOubTUQ' @ 0 : 0; will stop at (end) diff --git a/packs/module-docs/LOG.old b/packs/module-docs/LOG.old deleted file mode 100644 index 4fbe5e2..0000000 --- a/packs/module-docs/LOG.old +++ /dev/null @@ -1,15 +0,0 @@ -2023/12/19-14:25:58.704299 7fb0acf3b700 Recovering log #8 -2023/12/19-14:25:58.717166 7fb0acf3b700 Delete type=3 #6 -2023/12/19-14:25:58.717190 7fb0acf3b700 Delete type=0 #8 -2023/12/19-22:08:59.583949 7fb086400700 Level-0 table #13: started -2023/12/19-22:08:59.590634 7fb086400700 Level-0 table #13: 7975 bytes OK -2023/12/19-22:08:59.600142 7fb086400700 Delete type=0 #11 -2023/12/19-22:08:59.600341 7fb086400700 Manual compaction at level-0 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!YSuk1v59tLaL9XUK.BxFgDb91dqbkO9h4' @ 0 : 0; will stop at (end) -2023/12/19-22:08:59.622125 7fb086400700 Manual compaction at level-1 from '!journal!HbtPlHNFO1L6RVj0' @ 72057594037927935 : 1 .. '!journal.pages!YSuk1v59tLaL9XUK.BxFgDb91dqbkO9h4' @ 0 : 0; will stop at '!journal.pages!YSuk1v59tLaL9XUK.BxFgDb91dqbkO9h4' @ 17 : 1 -2023/12/19-22:08:59.622154 7fb086400700 Compacting 1@1 + 1@2 files -2023/12/19-22:08:59.629116 7fb086400700 Generated table #14@1: 17 keys, 11373 bytes -2023/12/19-22:08:59.629154 7fb086400700 Compacted 1@1 + 1@2 files => 11373 bytes -2023/12/19-22:08:59.638172 7fb086400700 compacted to: files[ 0 0 1 0 0 0 0 ] -2023/12/19-22:08:59.638243 7fb086400700 Delete type=2 #5 -2023/12/19-22:08:59.638324 7fb086400700 Delete type=2 #13 -2023/12/19-22:08:59.648805 7fb086400700 Manual compaction at level-1 from '!journal.pages!YSuk1v59tLaL9XUK.BxFgDb91dqbkO9h4' @ 17 : 1 .. '!journal.pages!YSuk1v59tLaL9XUK.BxFgDb91dqbkO9h4' @ 0 : 0; will stop at (end) diff --git a/packs/module-docs/MANIFEST-000002 b/packs/module-docs/MANIFEST-000002 new file mode 100644 index 0000000..991e3ba Binary files /dev/null and b/packs/module-docs/MANIFEST-000002 differ diff --git a/packs/module-docs/MANIFEST-000015 b/packs/module-docs/MANIFEST-000015 deleted file mode 100644 index c554a59..0000000 Binary files a/packs/module-docs/MANIFEST-000015 and /dev/null differ diff --git a/packs/module-docs/_source/API_Documentation_Q4iS1LIiyy7acuaF.json b/packs/module-docs/_source/API_Documentation_Q4iS1LIiyy7acuaF.json index 84c8383..b070f8b 100644 --- a/packs/module-docs/_source/API_Documentation_Q4iS1LIiyy7acuaF.json +++ b/packs/module-docs/_source/API_Documentation_Q4iS1LIiyy7acuaF.json @@ -83,7 +83,7 @@ "image": {}, "text": { "format": 1, - "content": "
async function requestRollFromTokens (tokens, rollType, rollDesc, options = {})This will request a roll from the tokens given using socketlib to request the roll from the currently logged on owner of the token.
tokens: The list of tokens to request from
rollType: one of the strings 'attribute' or 'skill'
rollDesc: the name of the trait being requested
options: detailed below
The options object can be completely empty, but can have any or all of the following optional fields:
title: The title for the roll dialog, if the default is not required. For the aid of those rolling for multiple tokens, the token's name will be appended to the title
flavour: flavour text for the roll chat card. If unspecified, the title text will be used
mods: a list of roll modifiers represented as objects of the following fields:
label: Label for the modifier
value: a positive or negative number, the value of the roll modifier
ignore: an optional boolean which, if true, means that the modifier's ignore checkbox will be checked by default
modCallback: a function that takes a token as parameter, and returns an array of modifiers as listed above. This will be run for each token and the individual token's mod list will have the resulting list of modifiers appended to the list from 'mods' above.
The return value is a list of promises which, if fulfilled, are the resulting roll objects from the token's rolls.
" + "content": "async function requestRollFromTokens (tokens, rollType, rollDesc, options = {})This will request a roll from the tokens given using socketlib to request the roll from the currently logged on owner of the token.
tokens: The list of tokens to request from
rollType: one of the strings 'attribute' or 'skill'
rollDesc: the name of the trait being requested
options: detailed below
The options object can be completely empty, but can have any or all of the following optional fields:
title: The title for the roll dialog, if the default is not required. For the aid of those rolling for multiple tokens, the token's name will be appended to the title
flavour: flavour text for the roll chat card. If unspecified, the title text will be used. (it's spelled flavour to match the SWADE system. \"flavor\" is also accepted.
targetNumber: a target number. Defaults to 4, should be an integer
mods: a list of roll modifiers represented as objects of the following fields:
label: Label for the modifier
value: a positive or negative number, the value of the roll modifier
ignore: an optional boolean which, if true, means that the modifier's ignore checkbox will be checked by default
modCallback: a function that takes a token as parameter, and returns an array of modifiers as listed above. This will be run for each token and the individual token's mod list will have the resulting list of modifiers appended to the list from 'mods' above.
The return value is a list of promises which, if fulfilled, are the resulting roll objects from the token's rolls.
" }, "video": { "controls": true, @@ -98,13 +98,119 @@ "flags": {}, "_stats": { "systemId": "swade", - "systemVersion": "3.2.2", + "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1700439709611, - "modifiedTime": 1700440442904, - "lastModifiedBy": "R9ZgY0IvWl8ovIuT" + "modifiedTime": 1703375940967, + "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_key": "!journal.pages!Q4iS1LIiyy7acuaF.zvPWCYx402kk2hsE" + }, + { + "sort": 150000, + "name": "api.rulesVersion", + "type": "text", + "_id": "QdATvoUe4VuZrl7B", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "(property) rulesVersion
This API property gives the premium rules version that is active, preferring Savage Pathfinder over SWADE if both are active. It returns the following key depending on the active premium module, if any.
Active Module | Key |
|---|---|
Savage Pathfinder (SWPF) |
|
Savage Worlds Adventure Edition (SWADE) |
|
None of the above (SWADE System only) |
|
async function fearTable (actor)The fear table API property is the fear table macro helper from whichever premium module is currently installed and active. If only the system is active and no core rules premium module is active, this will throw an exception.
" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703097422432, + "modifiedTime": 1703097574374, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!journal.pages!Q4iS1LIiyy7acuaF.oOCgnw1eVGu6Uj4U" + }, + { + "sort": 300000, + "name": "api.requestFearRollFromTokens", + "type": "text", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "async function requestFearRollFromTokens (tokens, options = {})This will request a fear roll from the tokens given using socketlib to request the roll from the currently logged on owner of the token. This is a special case of requestRollFromTokens.
tokens: The list of tokens to request from
options: detailed below
The options object can be completely empty, but can have any or all of the following optional fields:
title: The title for the roll dialog, if the default is not required. For the aid of those rolling for multiple tokens, the token's name will be appended to the title
flavour: flavor text for the roll chat card. If unspecified, the title text will be used (it's spelled flavour because that's how the SWADE system spells it. \"flavor\" is also accepted)
fear: the fear penalty. It will do the right thing if this is positive or negative.
The return value is a list of promises which, if fulfilled, are the resulting roll objects from the token's rolls.
" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "R9ZgY0IvWl8ovIuT": 3, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1700439709611, + "modifiedTime": 1703375850704, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_id": "J0HiPqdHqM27gwUw", + "_key": "!journal.pages!Q4iS1LIiyy7acuaF.J0HiPqdHqM27gwUw" } ], "folder": null, @@ -117,11 +223,11 @@ }, "_stats": { "systemId": "swade", - "systemVersion": "3.2.2", + "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1700438778794, - "modifiedTime": 1700440473945, - "lastModifiedBy": "R9ZgY0IvWl8ovIuT" + "modifiedTime": 1703375940967, + "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "Q4iS1LIiyy7acuaF", "sort": 100000, diff --git a/packs/module-docs/_source/Helpers_for_Other_Modules_w4TImRTAiNiqDWeL.json b/packs/module-docs/_source/Helpers_for_Other_Modules_w4TImRTAiNiqDWeL.json new file mode 100644 index 0000000..4917fb4 --- /dev/null +++ b/packs/module-docs/_source/Helpers_for_Other_Modules_w4TImRTAiNiqDWeL.json @@ -0,0 +1,96 @@ +{ + "name": "Helpers for Other Modules", + "pages": [ + { + "sort": 100000, + "name": "Token Variant Art", + "type": "text", + "_id": "vQhO6BVdKZOubTUQ", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "An importable effect mapping for Token Variant Art's global effect configuration can be found at
/modules/swade-mb-helpers/config/token-variants-global-mappings.json
Most of the mappings require that the JB2A module (either the free or Patreon supporter version) be installed. It has configuration for visual effects the following.
Arcane Protection
Bound and Entangled
Conviction
Deflection
Distracted
Flying
Glow
Protection
Shaken
Shroud
Stunned
Vulnerable
A configuration for the Torch module for many SWPF light giving objects can be found at
/modules/swade-mb-helpers/config/torch_swade.json
Thanks for the original version of this file goes to Mestre Digital and the Savage Pathfinder - Enhanced module.
" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703649397890, + "modifiedTime": 1703649397890, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!journal.pages!w4TImRTAiNiqDWeL.VPc10iwSWh4COpk0" + } + ], + "folder": null, + "ownership": { + "default": 0, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": { + "core": { + "sheetClass": "" + } + }, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703649004019, + "modifiedTime": 1703649669283, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_id": "w4TImRTAiNiqDWeL", + "sort": 0, + "_key": "!journal!w4TImRTAiNiqDWeL" +} diff --git a/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json b/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json index a01f5e5..f81c991 100644 --- a/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json +++ b/packs/module-docs/_source/Macros_Mw1g2Fx5dp4SoqVP.json @@ -249,6 +249,76 @@ "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.mT3lMGUo9zvqQsOh" + }, + { + "sort": 500000, + "name": "Fear Table", + "type": "text", + "_id": "RxGaSpV6FStZyyBX", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "This macro will call the Fear Table macro from whichever premium ruleset (SPWF or SWADE) is active, preferring SWPF.
It will not work if no premium module is active.
" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703097037538, + "modifiedTime": 1703097110707, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.RxGaSpV6FStZyyBX" + }, + { + "sort": 500000, + "name": "Request Fear Check", + "type": "text", + "title": { + "show": true, + "level": 1 + }, + "image": {}, + "text": { + "format": 1, + "content": "This macro will prompt for a fear penalty and request a spirit roll with that penalty from targeted or selected tokens.
" + }, + "video": { + "controls": true, + "volume": 0.5 + }, + "src": null, + "system": {}, + "ownership": { + "default": -1, + "sVoCvBU1knmXzoYe": 3 + }, + "flags": {}, + "_stats": { + "systemId": "swade", + "systemVersion": "3.2.5", + "coreVersion": "11.315", + "createdTime": 1703097037538, + "modifiedTime": 1703376053416, + "lastModifiedBy": "sVoCvBU1knmXzoYe" + }, + "_id": "CRgBHcoOmH5hvadF", + "_key": "!journal.pages!Mw1g2Fx5dp4SoqVP.CRgBHcoOmH5hvadF" } ], "flags": { @@ -261,7 +331,7 @@ "systemVersion": "3.2.5", "coreVersion": "11.315", "createdTime": 1678169291843, - "modifiedTime": 1702960233927, + "modifiedTime": 1703376053416, "lastModifiedBy": "sVoCvBU1knmXzoYe" }, "_id": "Mw1g2Fx5dp4SoqVP", diff --git a/packs/module-docs/_source/Setting_Adjustments_YSuk1v59tLaL9XUK.json b/packs/module-docs/_source/Setting_Adjustments_YSuk1v59tLaL9XUK.json index afa67b3..90ece84 100644 --- a/packs/module-docs/_source/Setting_Adjustments_YSuk1v59tLaL9XUK.json +++ b/packs/module-docs/_source/Setting_Adjustments_YSuk1v59tLaL9XUK.json @@ -48,7 +48,7 @@ "image": {}, "text": { "format": 1, - "content": "SWADE Trait and Damage Rolls can now take into account common modifiers based on the target, if there is exactly one attacker and one target. Most will show up on all trait rolls if the target conditions are right. Gang up bonuses will only show up on Fighting rolls.
Any of the proposed modifiers may be ignored by checking the Ignore checkbox. Some modifiers are pre-ignored and must be unchecked to take effect.
The following target conditions are checked for before trait rolls:
Vulnerable
Deflection (as applied by the Deflection power effect from this module)
Arcane Protection (as applied by the Arcane Protection power effect from this module)
Arcane Resistance
Scale Modifiers
Gang Up, taking into account Block and Formation Fighter
The following target conditions are checked for before damage rolls:
Arcane Protection (as applied by the Arcane Protection power effect from this module)
Arcane Resistance
Special Abilities with 'weakness' in the swid (ignored by default, +4 damage)
Special Abilities with 'resistance' in the swid (ignored by default, -4 damage)
Gang Up bonus if the attacker has Pack Tactics
SWADE Trait and Damage Rolls can now take into account common modifiers based on the target, if there is exactly one attacker and one target. Most will show up on all trait rolls if the target conditions are right. Gang up bonuses will only show up on Fighting rolls.
Any of the proposed modifiers may be ignored by checking the Ignore checkbox. Some modifiers are pre-ignored and must be unchecked to take effect.
The following target conditions are checked for before trait rolls:
Vulnerable
Deflection (as applied by the Deflection power effect from this module)
Glow/Shroud (as applied by the power effect macros from this module)
Arcane Protection (as applied by the Arcane Protection power effect from this module)
Arcane Resistance
Scale Modifiers
Gang Up, taking into account Block and Formation Fighter
Range modifiers
The following target conditions are checked for before damage rolls:
Arcane Protection (as applied by the Arcane Protection power effect from this module)
Arcane Resistance
Special Abilities with 'weakness' in the swid (ignored by default, +4 damage)
Special Abilities with 'resistance' in the swid (ignored by default, -4 damage)
Gang Up bonus if the attacker has Pack Tactics
Results of ${rollDesc[0].toUpperCase()}${rollDesc.slice(1)} roll${contentExtra}:
+| Token | Roll | Result |
|---|---|---|
| ${token.name} | ` + + `${roll ? roll.total : 'Canceled'} | ` + + `${textResult} | ` + + '