Merge pull request '2.3.0 release' (#40) from develop into main

Reviewed-on: #40
This commit is contained in:
Mike Bloy 2023-12-20 04:19:29 +00:00
commit b50270a61f
119 changed files with 4380 additions and 957 deletions

6
.gitattributes vendored
View File

@ -1,4 +1,8 @@
packs/** binary
packs/**/*.ldb binary
packs/**/MANIFEST-* binary
packs/**/CURRENT binary
packs/**/LOCK binary
packs/**/LOG* binary
*.webp filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text

View File

@ -7,7 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## 2.2.0
## [2.3.0] 2023-12-19
### Added
- Trait and Damage Roll hooks to look for and apply modifiers for target
conditions:
- Vulnerable
- Deflection
- Arcane Protection
- Arcane Resistance
- Scale
- Gang Up
- Resistences and Weaknesses
- New Macro: Set token vision
- New Common Action: Illumination (for the darkness penalty effects)
- New macro: Quick Damage Roll
- New Vision mode: Low Light Vision
- Power Effect for Zombie
- Sample fixed request roll macro
### Changed
- Vision mode visual effects changed for Basic Vision and Darkvision
- Shape Change and Summon both set the disposition for their new tokens
- Shape Change and Summon both set vision to enabled for their new tokens
## [2.2.0]
### Added
@ -20,7 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- API Documentation
- Request Roll macro documentation
## 2.1.0
## [2.1.0]
### Changed
@ -30,7 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
name.
- Updates to documentation
## 2.0.0
## [2.0.0]
### Changed
@ -47,7 +73,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Shape Change
- Sloth/Speed
## 1.2.0
## [1.2.0]
### Changed
@ -56,20 +82,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- incorporated glow, shroud, hurry, and hinder power modifiers into power
effects
## 1.1.0
## [1.1.0]
### Added
- gold calculator macro for SWPF gold items
- Actions for common rolls with links to SWPF rules
## 1.0.1
## [1.0.1]
### Fixed
- Summon macro now spawns tokens with prototype token's actual dimensions
## 1.0.0
## [1.0.0]
### Added
@ -84,7 +110,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Protection and Smite macros now linked to swade system effects
## 0.9.0
## [0.9.0]
- Initial 'public' release

View File

@ -1,45 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Blind',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Blind' },
{ type: 'info', label: `Apply Blind to ${tokenList}` },
{ type: 'checkbox', label: 'Strong', options: false }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Raise', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const options = {
raise: (buttons === 'raise'),
strong: (!!inputs[2])
}
await createEffect(tokens, options)
}
}
async function createEffect (tokens, options) {
const effectDetails = (options.raise ? '-4' : '-2')
const effectEnd = (options.strong ? 'Vigor -2' : 'Vigor')
const effectName = `Blind (${effectDetails}) ${effectEnd} ends`
const baseEffect = CONFIG.statusEffects.find(se => se.label === 'EFFECT.StatusBlind')
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(baseEffect.icon, effectName, 1, [])
mutate.embedded.ActiveEffect[effectName].flags.core = { statusId: baseEffect.id }
const mutateOptions = swadeMBHelpers.defaultMutationOptions('Blind')
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,133 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
let traitOptions = [
'Agility', 'Smarts', 'Spirit', 'Strength', 'Vigor'
]
const allSkills = []
const traits = {}
for (const traitName of traitOptions) {
const lower = traitName.toLowerCase()
traits[traitName] = {
name: traitName,
type: 'attribute',
modkey: `system.attributes.${lower}.die.modifier`,
diekey: `system.attributes.${lower}.die.sides`
}
}
const tokenList = tokens.map(t => t.name).join(', ')
for (const token of tokens) {
const skills = token.actor.items.filter(item => item.type === 'skill')
for (const skill of skills) {
const name = skill.name
traits[name] = {
type: 'skill',
name,
modkey: `@Skill{${name}}[system.die.modifier]`,
diekey: `@Skill{${name}}[system.die.sides]`
}
if (name !== 'Unskilled' && !allSkills.find(v => v === name)) {
allSkills.push(name)
}
}
}
traitOptions = traitOptions.concat(allSkills.sort())
const menuOptions = {
title: 'Boost/Lower Trait',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Boost/Lower Trait' },
{ type: 'info', label: `Affected Tokens ${tokenList}` },
{ type: 'select', label: 'Trait', options: traitOptions },
{ type: 'info', label: 'Boost or Lower?' },
{ type: 'radio', label: 'Boost', options: ['isBoost', true] },
{ type: 'radio', label: 'Lower', options: ['isBoost', false] },
{ type: 'checkbox', label: 'Greater', options: false },
{ type: 'checkbox', label: 'Strong (lower only)', options: false }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Apply with raise', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const options = {
action: buttons,
name: inputs[2],
trait: traits[inputs[2]],
direction: inputs[4] || inputs[5],
greater: inputs[6],
strong: inputs[7]
}
createEffect(tokens, options)
}
}
const UPICON = 'icons/magic/life/cross-embers-glow-yellow-purple.webp'
const DOWNICON = 'icons/magic/movement/chevrons-down-yellow.webp'
async function createEffect (tokens, options) {
const raise = (options.action === 'raise')
const icon = (options.direction === 'Boost' ? UPICON : DOWNICON)
let namePart = `${options.direction} ${options.trait.name}`
const mode = CONST.ACTIVE_EFFECT_MODES.ADD
const mods = []
if (options.strong && options.direction === 'Lower') {
mods.push('strong')
}
if (options.greater) {
mods.push('greater')
}
if (mods.length > 0) {
namePart = `${namePart} (${mods.join(', ')})`
}
const minorEffect = swadeMBHelpers.createEffectDocument(
icon, `minor ${namePart}`, 5, [
{
key: options.trait.diekey,
mode,
value: (options.direction === 'Boost' ? '+2' : '-2'),
priority: 0
}
]
)
const majorEffect = swadeMBHelpers.createEffectDocument(
icon, `major ${namePart}`, 5, [
{
key: options.trait.diekey,
mode,
value: (options.direction === 'Boost' ? '+2' : '-2'),
priority: 0
}
]
)
if (options.direction === 'Lower' && options.greater === 'Greater') {
minorEffect.changes.push({
key: options.trait.modkey,
mode,
value: '-2',
priority: 0
})
}
const mutate = {
embedded: {
ActiveEffect: {
}
}
}
mutate.embedded.ActiveEffect[minorEffect.id] = minorEffect
if (raise) {
mutate.embedded.ActiveEffect[majorEffect.id] = majorEffect
}
const mutateOptions = swadeMBHelpers.defaultMutationOptions(namePart)
for (const token of tokens) {
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,62 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Confusion',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Confusion' },
{ type: 'info', label: `Apply Confusion to ${tokenList}` },
{ type: 'checkbox', label: 'Greater (adds shaken)', options: false }
],
buttons: [
{ label: 'Distracted', value: 'distracted' },
{ label: 'Vulnerable', value: 'vulnerable' },
{ label: 'Raise (both)', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
const greater = (inputs[2] === 'Greater (adds shaken)')
if (buttons && buttons !== 'cancel') {
await createEffect(tokens, buttons, greater)
}
}
function getStatus (label, name) {
const effect = JSON.parse(JSON.stringify(
CONFIG.statusEffects.find(se => se.label === label)))
effect.label = name
effect.flags.core = { statusId: effect.id }
effect.id = name
return effect
}
async function createEffect (tokens, choice, greater) {
const effects = []
if (choice === 'distracted' || choice === 'raise') {
effects.push(getStatus('SWADE.Distr', 'Distracted'))
}
if (choice === 'vulnerable' || choice === 'raise') {
effects.push(getStatus('SWADE.Vuln', 'Vulnerable'))
}
if (greater) {
effects.push(getStatus('SWADE.Shaken', 'Shaken'))
}
for (const token of tokens) {
const mutateOptions = swadeMBHelpers.defaultMutationOptions('Confusion')
const mutate = {
embedded: { ActiveEffect: {} }
}
for (const effect of effects) {
mutate.embedded.ActiveEffect[effect.id] = effect
}
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,37 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Deflection',
content: `Apply <em>Deflection</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'Apply (melee)', value: 'melee' },
{ label: 'Apply (ranged)', value: 'ranged' },
{ label: 'Apply with raise (both)', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions)
if (choice && choice !== 'cancel') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const icon = 'icons/magic/defensive/shield-barrier-deflect-teal.webp'
let effectName = 'Deflection'
if (choice === 'raise') {
effectName = `${effectName} (all)`
} else {
effectName = `${effectName} (${choice})`
}
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, [])
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,74 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Entangle',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Entangle' },
{ type: 'info', label: `Apply Entangle to ${tokenList}` },
{ type: 'radio', label: 'Not Damaging', options: ['dmg', true] },
{ type: 'radio', label: 'Damaging', options: ['dmg', false] },
{ type: 'radio', label: 'Deadly', options: ['dmg', false] },
{ type: 'checkbox', label: 'Tough', options: false }
],
buttons: [
{ label: 'Entangled', value: 'apply' },
{ label: 'Bound (raise)', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const options = {
apply: (buttons === 'raise' ? 'bound' : 'entangled'),
damage: (inputs[3] ? '2d4' : (inputs[4] ? '2d6' : null)),
tough: (!!inputs[5])
}
await createEffect(tokens, options)
}
}
function getStatus (label, name) {
const effect = JSON.parse(JSON.stringify(
CONFIG.statusEffects.find(se => se.label === label)))
effect.label = name
if (!effect.flags) {
effect.flags = {}
}
effect.flags.core = { statusId: effect.id }
effect.id = name
return effect
}
async function createEffect (tokens, options) {
const effectSearch = (options.apply === 'bound' ? 'SWADE.Bound' : 'SWADE.Entangled')
const effectName = (options.apply === 'bound' ? 'Bound' : 'Entangled')
const effect = getStatus(effectSearch, effectName)
const extraIcon = 'icons/magic/nature/root-vine-barrier-wall-brown.webp'
const extraEffect = swadeMBHelpers.createEffectDocument(extraIcon, 'Entangle Modifier', 1, [])
if (options.damage) {
extraEffect.id = `${extraEffect.id} - ${options.damage} dmg`
extraEffect.label = `${extraEffect.label} - ${options.damage} dmg`
}
if (options.tough) {
extraEffect.id = `Tough ${extraEffect.id}`
extraEffect.label = `Tough ${extraEffect.label}`
}
for (const token of tokens) {
const mutateOptions = swadeMBHelpers.defaultMutationOptions('Entangle')
const mutate = { embedded: { ActiveEffect: {} } }
mutate.embedded.ActiveEffect[effect.id] = effect
if (options.damage || options.tough) {
mutate.embedded.ActiveEffect[extraEffect.id] = extraEffect
}
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,58 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Glow',
content: `Apply <em>Glow</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'OK', value: 'ok' },
{ label: 'Mutate token lighting', value: 'mutate' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions)
if (choice === 'ok' || choice === 'mutate') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const icon = 'icons/magic/light/explosion-star-blue-large.webp'
const effectName = 'Glow'
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, [])
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
if (choice === 'mutate') {
const mutate2 = {
token: {
light: {
alpha: 0.5,
angle: 360,
attenuation: 0.5,
animation: {
intensity: 5,
reverse: false,
speed: 5,
type: 'starlight'
},
bright: 0,
color: '#0f3fff',
coloration: 1,
contrast: 0,
dim: 0.5,
luminosity: 0.5,
saturation: 0,
shadows: 0
}
}
}
mutateOptions.permanent = false
await warpgate.mutate(token.document, mutate2, {}, mutateOptions)
}
}
}

View File

@ -1,38 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Hinder',
content: `Apply <em>Hinder</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'OK', value: 'ok' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions, 'column')
if (choice === 'ok') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const icon = 'icons/magic/movement/abstract-ribbons-red-orange.webp'
const effectName = 'Hinder'
const changes = [
{
key: 'system.stats.speed.value',
mode: foundry.CONST.ACTIVE_EFFECT_MODES.ADD,
value: -2,
priority: 0
}
]
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, changes)
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,38 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Hurry',
content: `Apply <em>Hurry</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'OK', value: 'ok' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions, 'column')
if (choice === 'ok') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const icon = 'icons/skills/movement/feet-winged-boots-blue.webp'
const effectName = 'Hurry'
const changes = [
{
key: 'system.stats.speed.value',
mode: foundry.CONST.ACTIVE_EFFECT_MODES.ADD,
value: 2,
priority: 0
}
]
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, changes)
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,41 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Intangibility',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Intangibility' },
{ type: 'info', label: `Apply Intangibility to ${tokenList}` },
{ type: 'checkbox', label: 'Duration', options: false }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const options = {
duration: (!!inputs[2])
}
await createEffect(tokens, options)
}
}
async function createEffect (tokens, options) {
const effectName = 'Intangibility'
const duration = (options.duration ? 5 * 6 * 60 : 5)
const icon = 'icons/magic/control/debuff-energy-hold-levitate-blue-yellow.webp'
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, duration, [])
const mutateOptions = swadeMBHelpers.defaultMutationOptions('Intangibility')
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,44 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Invisibility',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Invisibility' },
{ type: 'info', label: `Apply Invisibility to ${tokenList}` },
{ type: 'checkbox', label: 'Duration', options: false }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Raise', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const options = {
raise: (buttons === 'raise'),
duration: (!!inputs[2])
}
await createEffect(tokens, options)
}
}
async function createEffect (tokens, options) {
const effectName = `${options.raise ? 'major' : 'minor'} Invisibility`
const baseEffect = CONFIG.statusEffects.find(se => se.label === 'EFFECT.StatusInvisible')
const duration = (options.duration ? 5 * 6 * 60 : 5)
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(baseEffect.icon, effectName, duration, [])
mutate.embedded.ActiveEffect[effectName].flags.core = { statusId: baseEffect.id }
const mutateOptions = swadeMBHelpers.defaultMutationOptions('Invisibility')
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,32 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Lingering Damage',
content: `Apply <em>Lingering Damage</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'Ok', value: 'ok' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions)
if (choice === 'ok') {
await createEffect(tokens)
}
}
async function createEffect (tokens) {
const icon = 'icons/magic/acid/dissolve-arm-flesh.webp'
const effectName = 'Lingering Damage'
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 1, [])
mutate.embedded.ActiveEffect['Lingering Damage'].flags.swade.expiration =
CONFIG.SWADE.CONST.STATUS_EFFECT_EXPIRATION.StartOfTurnPrompt
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,45 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Protection',
content: `Apply <em>Protection</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'Apply (+2 armor)', value: 'apply' },
{ label: 'Apply with raise (+2 toughness)', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions)
if (choice && choice !== 'cancel') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const baseEffect = CONFIG.statusEffects.find(se => se.label === 'SWADE.Protection')
const changes = [
{
key: 'system.stats.toughness.armor',
mode: foundry.CONST.ACTIVE_EFFECT_MODES.UPGRADE,
value: 2,
priority: 0
}
]
let effectName = 'minor Protection'
if (choice === 'raise') {
changes[0].key = 'system.stats.toughness.value'
effectName = 'major Protection'
}
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(
baseEffect.icon, effectName, 5, changes)
mutate.embedded.ActiveEffect[effectName].flags.core = { statusId: baseEffect.id }
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

39
macros/quickDamage.js Normal file
View File

@ -0,0 +1,39 @@
new Dialog({
title: 'Damage Roll Configuration',
content: `
<form>
<div class="form-group">
<label>Damage Roll:</label>
<input type="text" name="damageRoll" value="2d4x" />
</div>
<div class="form-group">
<label>AP:</label>
<input type="number" name="ap" value="0" />
</div>
<div class="form-group">
<label>Flavor:</label>
<input type="text" name="flavor" value="" />
</div>
</form>
`,
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
}
// Perform the damage roll and send the message
new CONFIG.Dice.DamageRoll(damageRoll, null, options).toMessage({ flavor })
}
},
cancel: {
label: 'Cancel'
}
}
}).render(true)

115
macros/setTokenVision.js Normal file
View File

@ -0,0 +1,115 @@
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 THRESHOLDS = {
dim: 0.4,
dark: 0.6,
pitchdark: 0.8
}
const RANGES = {
basic: {
bright: 25,
dim: 25,
dark: 10,
pitchdark: 0
},
lowlight: {
bright: 25,
dim: 25,
dark: 10,
pitchdark: 0
},
darkvision: {
bright: 25,
dim: 25,
dark: 10,
pitchdark: 10
},
nightvision: {
bright: 200,
dim: 200,
dark: 200,
pitchdark: 200
}
}
const SIGHT_NAMES = {
lowlight: 'low-light-vision',
darkvision: 'darkvision',
nightvision: 'night-vision'
}
const SIGHT_MODES = {
lowlight: 'lowlight',
darkvision: 'darkvision',
nightvision: 'darkvision',
basic: 'basic'
}
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]
} else if (scene.darkness > THRESHOLDS.dark) {
sceneBright = BRIGHT_LEVELS[2]
} else if (scene.darkness > THRESHOLDS.dim) {
sceneBright = BRIGHT_LEVELS[1]
}
let bright = sceneBright
if (argBright && BRIGHT_LEVELS.includes(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] }
}
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
// don't set sight on a token where it's not enabled
}
let sightType = 'basic'
for (const sight in SIGHT_NAMES) {
if (findAbility(token, SIGHT_NAMES[sight])) {
sightType = sight
}
}
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)
await token.update(data)
}
}
main()

View File

@ -1,58 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const dialogOptions = {
title: 'Shroud',
content: `Apply <em>Shroud</em> to ${tokenList}`,
default: 'cancel',
buttons: [
{ label: 'OK', value: 'ok' },
{ label: 'Mutate token lighting', value: 'mutate' },
{ label: 'Cancel', value: 'cancel' }
]
}
const choice = await warpgate.buttonDialog(dialogOptions)
if (choice === 'ok' || choice === 'mutate') {
await createEffect(tokens, choice)
}
}
async function createEffect (tokens, choice) {
const icon = 'icons/magic/perception/silhouette-stealth-shadow.webp'
const effectName = 'Shroud'
for (const token of tokens) {
const mutate = swadeMBHelpers.createMutationWithEffect(icon, effectName, 5, [])
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
if (choice === 'mutate') {
const mutate2 = {
token: {
light: {
alpha: 0.5,
angle: 360,
attenuation: 0.1,
animation: {
intensity: 5,
reverse: false,
speed: 5,
type: 'roiling'
},
bright: 0,
color: null,
coloration: 0,
contrast: 0,
dim: 0.1,
luminosity: -0.15,
saturation: 0,
shadows: 0.25
}
}
}
mutateOptions.permanent = false
await warpgate.mutate(token.document, mutate2, {}, mutateOptions)
}
}
}

View File

@ -1,74 +0,0 @@
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const tokenList = tokens.map(t => t.name).join(', ')
const menuOptions = {
title: 'Smite',
defaultButton: 'Cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Smite' },
{ type: 'info', label: `Apply Smite to ${tokenList}` },
{ type: 'checkbox', label: 'Greater', options: false }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Apply with Raise', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const tokenWeapons = {}
let index = 2
for (const token of tokens) {
index += 2
tokenWeapons[token.id] = index
menuData.inputs.push({ type: 'info', label: `<h2>${token.name}</h2>` })
const weapons = token.actor.items.filter(i => i.type === 'weapon').map(
i => { return { value: i.name, html: i.name } })
weapons.unshift({ value: '', html: '<i>None</i>' })
menuData.inputs.push({ type: 'select', label: token.name, options: weapons })
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
for (const tokenId in tokenWeapons) {
tokenWeapons[tokenId] = inputs[tokenWeapons[tokenId]]
}
const greater = (inputs[2] === 'Greater')
if (buttons && buttons !== 'cancel') {
await createEffect(tokens, tokenWeapons, buttons, greater)
}
}
async function createEffect (tokens, tokenWeapons, choice, greater) {
const baseEffect = CONFIG.statusEffects.find(se => se.label === 'SWADE.Smite')
const effectIcon = baseEffect.icon
let changeValue = (choice === 'raise' ? '+4' : '+2')
if (greater) {
changeValue = (choice === 'raise' ? '+6' : '+4')
}
for (const token of tokens) {
const weaponName = tokenWeapons[token.id]
const weaponId = token.actor.items.getName(weaponName)?.id
const changeKey = `@Weapon{${weaponName}}[system.damage]`
if (!weaponId) {
continue
}
const effectName = `${choice === 'raise' ? 'major' : 'minor'} Smite${greater ? '(greater)' : ''} (${weaponName})`
const changes = [
{
key: changeKey,
mode: foundry.CONST.ACTIVE_EFFECT_MODES.ADD,
value: changeValue,
priority: 0
}
]
const mutate = swadeMBHelpers.createMutationWithEffect(
effectIcon, effectName, 5, changes)
mutate.embedded.ActiveEffect[effectName].flags.core = { statusId: baseEffect.id }
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, mutate, {}, mutateOptions)
}
}

View File

@ -1,74 +0,0 @@
const ACTORFOLDER = 'Summonables'
const SUMMONICON = 'icons/magic/symbols/runes-star-orange.webp'
swadeMBHelpers.runOnTargetOrSelectedTokens(main)
async function main (tokens) {
const token = tokens[0]
const tokenList = token.name
const folder = swadeMBHelpers.getActorFolderByPath(ACTORFOLDER)
const actors = swadeMBHelpers.getActorsInFolder(folder)
const menuOptions = {
title: 'Summon Creature',
defaultButton: 'cancel',
options: {}
}
const menuData = {
inputs: [
{ type: 'header', label: 'Summon Creature' },
{ type: 'info', label: `${tokenList} is summoning` },
{
type: 'select',
label: 'Ally to summon',
options: Object.keys(actors).sort().map(k => { return { value: actors[k].id, html: k } })
},
{ type: 'number', label: 'Number to spawn (+half base cost per)', options: 1 }
],
buttons: [
{ label: 'Apply', value: 'apply' },
{ label: 'Apply with raise', value: 'raise' },
{ label: 'Cancel', value: 'cancel' }
]
}
const { buttons, inputs } = await warpgate.menu(menuData, menuOptions)
if (buttons && buttons !== 'cancel') {
const summonData = {
raise: (buttons === 'raise'),
actorId: inputs[2],
number: inputs[3]
}
summonData.actor = game.actors.get(summonData.actorId)
summonData.actorName = summonData.actor.name
summonData.icon = summonData.actor.prototypeToken.texture.src
summonData.token = summonData.actor.prototypeToken
doWork(summonData, token)
}
}
async function doWork (summonData, token) {
console.log('Summon ', token, summonData)
const effectName = `Summoned ${summonData.actorName} (${summonData.number})`
const tokenEffectMutation = swadeMBHelpers.createMutationWithEffect(SUMMONICON, effectName, 5, [])
const mutateOptions = swadeMBHelpers.defaultMutationOptions(effectName)
await warpgate.mutate(token.document, tokenEffectMutation, {}, mutateOptions)
const spawnOptions = {
controllingActor: token.actor,
duplicates: summonData.number,
comparisonKeys: { ActiveEffect: 'label' },
crosshairs: {
icon: summonData.icon,
label: `Summon ${summonData.actorName}`,
drawOutline: false,
rememberControlled: true
}
}
const spawnMutation = {
token: {
actorLink: false,
name: `${token.name}'s ${summonData.token.name}`
}
}
await warpgate.spawn(summonData.actorName, spawnMutation, {}, spawnOptions)
}

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000211
MANIFEST-000014

View File

@ -1,15 +1,3 @@
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)
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

View File

@ -1,8 +1,8 @@
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)
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)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
{
"folder": "0nDRFmMBs5DBJU9M",
"name": "Barrier",
"type": "action",
"_id": "YBfJFr0Q0Hnz3Z0Z",
"img": "icons/magic/water/barrier-ice-wall-snow.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"KBEgoqgT": {
"name": "Damage",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"rppj3jdl": {
"name": "Deadly",
"type": "damage",
"override": "2d6",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"R19q7be2": {
"name": "Lingering Damage",
"type": "damage",
"override": "2d4-2",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"nVD7h2EG": {
"name": "Lingering Deadly Damage",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
}
}
},
"swid": "barrier"
},
"effects": [],
"sort": 600000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695165795303,
"modifiedTime": 1702839170547,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_key": "!items!YBfJFr0Q0Hnz3Z0Z"
}

View File

@ -0,0 +1,88 @@
{
"folder": "0nDRFmMBs5DBJU9M",
"name": "Blast/Burst",
"type": "action",
"_id": "uOfqTXUyHk6M5tcp",
"img": "icons/magic/fire/explosion-fireball-large-purple-orange.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"syarnXHm": {
"name": "Damage (+2)",
"type": "damage",
"override": "3d6",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"72RI01JA": {
"name": "Greater (+4)",
"type": "damage",
"override": "4d6",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": true
},
"bJStUmyi": {
"name": "Lingering Damage",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"ETr8eRwJ": {
"name": "Lingering Extra Damage (+2)",
"type": "damage",
"override": "3d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"DvnTrhtg": {
"name": "Lingering Greater Damage (+4)",
"type": "damage",
"override": "4d4",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": true
}
}
},
"swid": "blastburst"
},
"effects": [],
"sort": 800000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695165983064,
"modifiedTime": 1702839170549,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_key": "!items!uOfqTXUyHk6M5tcp"
}

View File

@ -0,0 +1,110 @@
{
"name": "Bolt",
"type": "action",
"img": "icons/magic/lightning/bolt-beam-strike-blue.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"U0ReLbPz": {
"name": "Damage (+2)",
"type": "damage",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "3d6",
"isHeavyWeapon": false
},
"bgEDx2DC": {
"name": "Distegrate (+2) Resist (Vigor)",
"type": "resist",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Vigor",
"isHeavyWeapon": false
},
"rc9YFNrJ": {
"name": "Greater Bolt (+4)",
"type": "damage",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "4d6",
"isHeavyWeapon": true
},
"mL2g1HXb": {
"name": "Rate of Fire (+2)",
"type": "trait",
"dice": 2,
"resourcesUsed": null,
"modifier": "",
"override": "",
"isHeavyWeapon": false
},
"yaUtp0a1": {
"name": "Lingering Damage",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": false
},
"enYZVtNT": {
"name": "Lingering Extra Damage (+2)",
"type": "damage",
"override": "3d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"Oy39lfJP": {
"name": "Lingering Greater Damage (+4)",
"type": "damage",
"override": "4d4",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": true
}
}
},
"swid": "bolt"
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695082141993,
"modifiedTime": 1702839170544,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "8fL0gIyNIxr2hr2s",
"sort": 400000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!8fL0gIyNIxr2hr2s"
}

View File

@ -0,0 +1,66 @@
{
"name": "Burrow",
"type": "action",
"img": "icons/magic/earth/projectile-stone-landslide.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"hx9EGBvx": {
"name": "Surprise (Stealth)",
"type": "trait",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Stealth",
"isHeavyWeapon": false
},
"m0xSkgHw": {
"name": "Oppose Surprise (Notice)",
"type": "resist",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Notice",
"isHeavyWeapon": false
}
}
},
"swid": "burrow"
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1696130722637,
"modifiedTime": 1702839170544,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "Ne3oDoPl3hc8eEX1",
"sort": 300000,
"_key": "!items!Ne3oDoPl3hc8eEX1"
}

View File

@ -0,0 +1,88 @@
{
"folder": "0nDRFmMBs5DBJU9M",
"name": "Damage Field",
"type": "action",
"_id": "pSztYcH5w4VNI2nb",
"img": "icons/magic/defensive/armor-shield-barrier-steel.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"vzxICJES": {
"name": "Damage (+2)",
"type": "damage",
"override": "2d6",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"B5Vbtiut": {
"name": "⭐ Greater (+4)",
"type": "damage",
"override": "3d6",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": true
},
"Ldobq3c1": {
"name": "Lingering Damage",
"type": "damage",
"override": "2d4-2",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"xQjPiDKU": {
"name": "Lingering Extra Damage (+2)",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null
},
"bLXiZ53I": {
"name": "Lingering Greater Damage",
"type": "damage",
"override": "3d4",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": true
}
}
},
"swid": "damage-field"
},
"effects": [],
"sort": 700000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695250911715,
"modifiedTime": 1702839170549,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_key": "!items!pSztYcH5w4VNI2nb"
}

View File

@ -0,0 +1,69 @@
{
"name": "Disarm",
"type": "action",
"img": "icons/skills/melee/sword-damaged-broken-orange.webp",
"system": {
"description": "<p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore03rules0.JournalEntryPage.03situationalr00#disarm]{DISARM}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"nRh9e5kO": {
"name": "Resist Disarm (Arm Hit)",
"type": "resist",
"override": "Strength",
"modifier": "-2",
"isHeavyWeapon": false
},
"HxIXbUus": {
"name": "Resist Disarm (Hand Hit)",
"type": "resist",
"override": "Strength",
"modifier": "-4",
"dice": null,
"resourcesUsed": null
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "SWAD MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "disarm"
},
"effects": [],
"flags": {
"core": {},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1679667342015,
"modifiedTime": 1702839170544,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "Lijthu5ONJvcIzDX",
"sort": 300000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!Lijthu5ONJvcIzDX"
}

View File

@ -0,0 +1,66 @@
{
"name": "Disguise",
"type": "action",
"img": "icons/skills/social/diplomacy-peace-alliance.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"m0xSkgHw": {
"name": "Detect Disguise (Notice -2)",
"type": "resist",
"override": "Notice",
"modifier": "-2",
"dice": null,
"resourcesUsed": null,
"isHeavyWeapon": false
},
"oJYREpI8": {
"name": "Detect major Disguise (Notice -4)",
"type": "resist",
"dice": null,
"resourcesUsed": null,
"modifier": "-4",
"override": "Notice",
"isHeavyWeapon": false
}
}
},
"swid": "disguise"
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1696130722637,
"modifiedTime": 1702839170546,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "TteEFvR0yPWKNbI5",
"sort": 200000,
"_key": "!items!TteEFvR0yPWKNbI5"
}

View File

@ -0,0 +1,61 @@
{
"name": "Evade",
"type": "action",
"img": "icons/skills/movement/figure-running-gray.webp",
"system": {
"description": "<p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore03rules0.JournalEntryPage.03situationalr00#evasion]{Evasion}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"L0XtU5KM": {
"name": "Evade (Agility)",
"type": "resist",
"override": "Agility",
"modifier": "-2",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "SWADE MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "evade"
},
"effects": [],
"flags": {
"core": {},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1674019466231,
"modifiedTime": 1702839170550,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "xA7qKMmugJv7z6j1",
"sort": 900000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!xA7qKMmugJv7z6j1"
}

View File

@ -0,0 +1,63 @@
{
"name": "Frenzy",
"type": "action",
"img": "icons/skills/melee/strikes-sword-scimitar.webp",
"system": {
"description": "",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"qQtymA5P": {
"name": "Frenzy Attack",
"type": "trait",
"modifier": "",
"resourcesUsed": null,
"dice": 2,
"override": "Fighting",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "frenzy"
},
"effects": [],
"flags": {
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
},
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1668048955652,
"modifiedTime": 1702839170547,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "hTRU6MiIYlFUVk4T",
"sort": 700000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!hTRU6MiIYlFUVk4T"
}

View File

@ -0,0 +1,108 @@
{
"name": "Grapple (Tentacles)",
"type": "action",
"img": "icons/skills/melee/unarmed-punch-fist.webp",
"system": {
"description": "<p></p><p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore03rules0.JournalEntryPage.03situationalr00#grappling]{Grappling}</p><p></p><p>@UUID[Compendium.swpf-core-rules.swpf-abilities.Item.0fZ7WmUuKGgU35sJ]{Tentacles}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"XEC2IWM0": {
"name": "Grapple",
"type": "trait",
"dice": null,
"resourcesUsed": null,
"modifier": "+2",
"override": "Athletics",
"isHeavyWeapon": false
},
"g7oxsNqI": {
"name": "Resist Grapple",
"type": "resist",
"override": "Athletics",
"modifier": "",
"isHeavyWeapon": false
},
"KCvw4z5i": {
"name": "Crush",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Strength",
"isHeavyWeapon": false
},
"1wWLiKwK": {
"name": "Resist Crush",
"type": "resist",
"override": "Strength",
"modifier": "",
"isHeavyWeapon": false
},
"t1Db4fxd": {
"name": "Crush",
"type": "damage",
"modifier": "",
"override": "@str",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "grapple-tentacles"
},
"effects": [],
"flags": {
"swim": {
"config": {
"reloadSFX": "",
"fireSFX": "",
"autoFireSFX": "",
"silencedFireSFX": "",
"silencedAutoFireSFX": "",
"emptySFX": "",
"isPack": false,
"isConsumable": false,
"isSilenced": false,
"loadedAmmo": "",
"_version": 1
}
},
"core": {},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1667883835416,
"modifiedTime": 1702839170543,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "6fkUnnyILsETRfjI",
"sort": 100000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!6fkUnnyILsETRfjI"
}

View File

@ -0,0 +1,108 @@
{
"name": "Grapple",
"type": "action",
"img": "icons/skills/melee/unarmed-punch-fist.webp",
"system": {
"description": "<p></p><p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore03rules0.JournalEntryPage.03situationalr00#grappling]{Grappling}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"XEC2IWM0": {
"name": "Grapple",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Athletics",
"isHeavyWeapon": false
},
"g7oxsNqI": {
"name": "Resist Grapple",
"type": "resist",
"override": "Athletics",
"modifier": "",
"isHeavyWeapon": false
},
"KCvw4z5i": {
"name": "Crush",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Strength",
"isHeavyWeapon": false
},
"1wWLiKwK": {
"name": "Resist Crush",
"type": "resist",
"override": "Strength",
"modifier": "",
"isHeavyWeapon": false
},
"t1Db4fxd": {
"name": "Crush",
"type": "damage",
"modifier": "",
"override": "@str",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "grapple"
},
"effects": [],
"flags": {
"swim": {
"config": {
"reloadSFX": "",
"fireSFX": "",
"autoFireSFX": "",
"silencedFireSFX": "",
"silencedAutoFireSFX": "",
"emptySFX": "",
"isPack": false,
"isConsumable": false,
"isSilenced": false,
"loadedAmmo": "",
"_version": 1
}
},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
},
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1667883835416,
"modifiedTime": 1702839170547,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "jcWvDnoBNyVdXnsu",
"sort": 800000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!jcWvDnoBNyVdXnsu"
}

View File

@ -0,0 +1,94 @@
{
"name": "Havoc",
"type": "action",
"img": "icons/magic/air/air-burst-spiral-blue-gray.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"swid": "havoc",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"t1FV85tY": {
"name": "Resist minor Havoc",
"type": "resist",
"override": "Strength",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"macroActor": "default",
"isHeavyWeapon": false
},
"Rch2cQhm": {
"name": "Resist major Havoc",
"type": "resist",
"override": "Strength",
"modifier": "-2",
"dice": null,
"resourcesUsed": null,
"macroActor": "default",
"isHeavyWeapon": false
},
"BNXwvwgh": {
"name": "Strike a hard object",
"type": "damage",
"override": "2d4",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"macroActor": "default",
"isHeavyWeapon": false
},
"dOsQSsEW": {
"name": "Strike a hard object (greater)",
"type": "damage",
"override": "2d6",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"macroActor": "default",
"isHeavyWeapon": false
}
}
}
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {
"core": {},
"exportSource": {
"world": "sw-module-creation",
"system": "swade",
"coreVersion": "11.315",
"systemVersion": "3.2.2"
}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1699734652310,
"modifiedTime": 1702839170545,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "Sjg9D9FQ0uxZQrD0",
"sort": 0,
"_key": "!items!Sjg9D9FQ0uxZQrD0"
}

View File

@ -0,0 +1,156 @@
{
"folder": null,
"name": "Illumination",
"type": "action",
"img": "icons/magic/light/explosion-star-blue-large.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"swid": "lighting",
"additionalStats": {},
"favorite": false,
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {}
}
},
"effects": [
{
"name": "Dim Lighting",
"icon": "icons/magic/light/light-lantern-lit-white.webp",
"changes": [
{
"key": "system.stats.globalMods.trait",
"mode": 2,
"value": "-2",
"priority": null
}
],
"transfer": true,
"_id": "fpSigRcCCADmisXP",
"disabled": true,
"duration": {
"startTime": 0,
"seconds": null,
"combat": "bLRI8G4dAxvCnqbC",
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "",
"origin": null,
"statuses": [],
"flags": {
"swade": {
"favorite": true,
"expiration": null,
"loseTurnOnHold": false
}
},
"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",
"mode": 2,
"value": "-4",
"priority": null
}
],
"transfer": true,
"_id": "g9W5hJisq3MsCpZW",
"disabled": true,
"duration": {
"startTime": 0,
"seconds": null,
"combat": "bLRI8G4dAxvCnqbC",
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "",
"origin": null,
"statuses": [],
"flags": {
"swade": {
"expiration": null,
"loseTurnOnHold": false,
"favorite": true
}
},
"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",
"mode": 2,
"value": "-6",
"priority": null
}
],
"transfer": true,
"_id": "NI4hfxplfJ5pqImL",
"disabled": true,
"duration": {
"startTime": 0,
"seconds": null,
"combat": "bLRI8G4dAxvCnqbC",
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
},
"description": "",
"origin": null,
"statuses": [],
"flags": {
"swade": {
"expiration": null,
"loseTurnOnHold": false,
"favorite": true
}
},
"tint": null,
"_key": "!items.effects!RC1Nz6iph8wPPK1B.NI4hfxplfJ5pqImL"
}
],
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1702939897892,
"modifiedTime": 1702960438222,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "RC1Nz6iph8wPPK1B",
"sort": 0,
"_key": "!items!RC1Nz6iph8wPPK1B"
}

View File

@ -0,0 +1,87 @@
{
"name": "Networking",
"type": "action",
"img": "icons/skills/social/diplomacy-handshake.webp",
"system": {
"description": "<p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore04theadv.JournalEntryPage.04networking0000]{Networking}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"VvEhWhmL": {
"name": "Persuasion",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Persuasion",
"isHeavyWeapon": false
},
"vyhH3l9E": {
"name": "Intimidation",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Intimidation",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "networking"
},
"effects": [],
"flags": {
"swim": {
"config": {
"reloadSFX": "",
"fireSFX": "",
"autoFireSFX": "",
"silencedFireSFX": "",
"silencedAutoFireSFX": "",
"emptySFX": "",
"isPack": false,
"isConsumable": false,
"isSilenced": false,
"loadedAmmo": "",
"_version": 1
}
},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
},
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1667885227318,
"modifiedTime": 1702839170547,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "ZlN2t7I05FjampmX",
"sort": 600000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!ZlN2t7I05FjampmX"
}

View File

@ -0,0 +1,19 @@
{
"name": "Oppose",
"sorting": "a",
"folder": null,
"type": "Item",
"_id": "5OjjkiKDo8RxHpGz",
"sort": 0,
"color": null,
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.2",
"coreVersion": "11.315",
"createdTime": 1699419673111,
"modifiedTime": 1699419673111,
"lastModifiedBy": "R9ZgY0IvWl8ovIuT"
},
"_key": "!folders!5OjjkiKDo8RxHpGz"
}

View File

@ -0,0 +1,57 @@
{
"name": "Oppose (Spirit)",
"type": "action",
"img": "icons/magic/control/debuff-energy-hold-teal-blue.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Oppose",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"j20IwFOf": {
"name": "Oppose (Spirit)",
"type": "resist",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Spirit",
"isHeavyWeapon": false
}
}
},
"swid": "oppose-spirit"
},
"effects": [],
"folder": "5OjjkiKDo8RxHpGz",
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1696130050023,
"modifiedTime": 1702839170545,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "O1bgJSYRjxmSW3R5",
"sort": -100000,
"_key": "!items!O1bgJSYRjxmSW3R5"
}

View File

@ -0,0 +1,59 @@
{
"name": "Power Effect",
"type": "action",
"img": "icons/magic/symbols/circled-gem-pink.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"E4Pbzvi0": {
"name": "Effect",
"type": "macro",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "",
"uuid": "Compendium.swade-mb-helpers.helper-macros.Macro.AjuA11hQ48UJNwlH",
"isHeavyWeapon": false,
"macroActor": "self"
}
}
},
"swid": "power-effect"
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695081676167,
"modifiedTime": 1702839170550,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "vrfo9zsECbxan4dt",
"sort": 100000,
"_key": "!items!vrfo9zsECbxan4dt"
}

View File

@ -0,0 +1,19 @@
{
"name": "Power Effects",
"sorting": "a",
"folder": null,
"type": "Item",
"_id": "0nDRFmMBs5DBJU9M",
"sort": 100000,
"color": null,
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.308",
"createdTime": 1695081947648,
"modifiedTime": 1695164535987,
"lastModifiedBy": "R9ZgY0IvWl8ovIuT"
},
"_key": "!folders!0nDRFmMBs5DBJU9M"
}

View File

@ -0,0 +1,108 @@
{
"name": "Push",
"type": "action",
"img": "icons/skills/melee/shield-block-bash-blue.webp",
"system": {
"description": "<p></p><p>@UUID[Compendium.swpf-core-rules.swpf-rules.swpfcore03rules0.JournalEntryPage.03situationalr00#push]{Push}</p>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"wwxI37Do": {
"name": "Push",
"type": "trait",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"override": "Strength",
"isHeavyWeapon": false
},
"o5BwRFE0": {
"name": "Oppose Push",
"type": "resist",
"override": "Strength",
"modifier": "",
"isHeavyWeapon": false
},
"SceRYgjP": {
"name": "Resist Prone",
"type": "resist",
"override": "Athletics",
"modifier": "",
"isHeavyWeapon": false
},
"JUaIJ70O": {
"name": "Running Push",
"type": "trait",
"override": "Strength",
"modifier": "+2",
"dice": null,
"resourcesUsed": null
},
"VNgJEQP8": {
"name": "Resist Prone vs Raise",
"type": "resist",
"override": "Athletics",
"modifier": "-2",
"dice": null,
"resourcesUsed": null
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "push"
},
"effects": [],
"flags": {
"swim": {
"config": {
"reloadSFX": "",
"fireSFX": "",
"autoFireSFX": "",
"silencedFireSFX": "",
"silencedAutoFireSFX": "",
"emptySFX": "",
"isPack": false,
"isConsumable": false,
"isSilenced": false,
"loadedAmmo": "",
"_version": 1
}
},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
},
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1667884673139,
"modifiedTime": 1702839170544,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "DKs4DNcTRYtcdrri",
"sort": 200000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!DKs4DNcTRYtcdrri"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,19 @@
{
"name": "Savage Pathfinder",
"sorting": "a",
"folder": null,
"type": "Item",
"_id": "rXqlP1phfPHNZrRT",
"sort": 0,
"color": null,
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.308",
"createdTime": 1695164553594,
"modifiedTime": 1695164553594,
"lastModifiedBy": "R9ZgY0IvWl8ovIuT"
},
"_key": "!folders!rXqlP1phfPHNZrRT"
}

View File

@ -0,0 +1,67 @@
{
"folder": "0nDRFmMBs5DBJU9M",
"name": "Shake Off (Spirit)",
"type": "action",
"img": "icons/magic/control/debuff-energy-snare-blue.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"icoPVRIf": {
"name": "Shake Off",
"type": "resist",
"override": "Spirit",
"modifier": "",
"dice": null,
"resourcesUsed": null,
"uuid": "",
"isHeavyWeapon": false
},
"41FetTKN": {
"name": "Shake Off (from Strong)",
"type": "resist",
"override": "Spirit",
"modifier": "-2",
"dice": null,
"resourcesUsed": null
}
}
},
"swid": "shake-off-spirit"
},
"effects": [],
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695165609050,
"modifiedTime": 1702839170545,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "Tj9Pbdh9tu3ngd03",
"sort": 750000,
"_key": "!items!Tj9Pbdh9tu3ngd03"
}

View File

@ -0,0 +1,65 @@
{
"name": "Shake off (Vigor)",
"type": "action",
"img": "icons/magic/control/debuff-energy-snare-brown.webp",
"system": {
"description": "",
"notes": "",
"source": "",
"additionalStats": {},
"favorite": false,
"category": "Power Action",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"gJBLDGdP": {
"name": "Shake Off",
"type": "resist",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Vigor",
"isHeavyWeapon": false
},
"oTYF6EjQ": {
"name": "Shake Off (From Strong)",
"type": "resist",
"override": "Vigor",
"modifier": "-2",
"dice": null,
"resourcesUsed": null
}
}
},
"swid": "shake-off-vigor"
},
"effects": [],
"folder": "0nDRFmMBs5DBJU9M",
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695698203871,
"modifiedTime": 1702839170546,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "XJYoBJcpr0Ar3cES",
"sort": 500000,
"_key": "!items!XJYoBJcpr0Ar3cES"
}

View File

@ -0,0 +1,87 @@
{
"name": "Work the Room",
"type": "action",
"img": "icons/skills/social/diplomacy-unity-alliance.webp",
"system": {
"description": "<ul><li><p>@UUID[Compendium.swpf-core-rules.swpf-edges.H2kXu5SWIf4hZ99G]{Work the Room}</p></li><li><p>@UUID[Compendium.swpf-core-rules.swpf-edges.2W87DoEcg9sheggg]{Work the Crowd}</p></li></ul>",
"notes": "",
"additionalStats": {},
"actions": {
"dmgMod": "",
"additional": {
"VHwhhR0B": {
"name": "Persuasion",
"type": "trait",
"modifier": "",
"resourcesUsed": null,
"dice": 2,
"override": "Persuasion",
"isHeavyWeapon": false
},
"WF83NRE1": {
"name": "Performance",
"type": "trait",
"modifier": "",
"resourcesUsed": null,
"dice": 2,
"override": "Performance",
"isHeavyWeapon": false
}
},
"trait": "",
"traitMod": ""
},
"favorite": false,
"source": "Swade MB Common Actions",
"category": "Savage Pathfinder",
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"swid": "work-the-room"
},
"effects": [],
"flags": {
"swim": {
"config": {
"reloadSFX": "",
"fireSFX": "",
"autoFireSFX": "",
"silencedFireSFX": "",
"silencedAutoFireSFX": "",
"emptySFX": "",
"isPack": false,
"isConsumable": false,
"isSilenced": false,
"loadedAmmo": "",
"_version": 1
}
},
"exportSource": {
"world": "swpf-rotr",
"system": "swade",
"coreVersion": "10.291",
"systemVersion": "2.2.5"
},
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1667885448561,
"modifiedTime": 1702839170545,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "rXqlP1phfPHNZrRT",
"_id": "NhwZbABEXrt8OzT3",
"sort": 500000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!items!NhwZbABEXrt8OzT3"
}

View File

@ -1 +1 @@
MANIFEST-000102
MANIFEST-000014

View File

@ -1,8 +1,3 @@
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)
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

View File

@ -1,8 +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)
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)

BIN
packs/gear/MANIFEST-000014 Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,126 @@
{
"name": "Bladed Scarf",
"type": "weapon",
"img": "icons/commodities/cloth/cloth-bolt-gold-red.webp",
"system": {
"description": "<p>Knowing that seductive performances can bring out the worst in watchers, some Varisians craft rows of razor-sharp blades into their scarves. This deals Str+d4 damage to any creature successfully grappled while wielding the scarf.</p>",
"notes": "Two Hands",
"source": "Pathfinder Companion",
"additionalStats": {},
"quantity": 1,
"weight": 1,
"price": 12,
"equippable": false,
"equipStatus": 1,
"isArcaneDevice": false,
"arcaneSkillDie": {
"sides": 4,
"modifier": 0
},
"powerPoints": {},
"isVehicular": false,
"mods": 1,
"actions": {
"trait": "",
"traitMod": "",
"dmgMod": "",
"additional": {
"XEC2IWM0": {
"name": "Grapple",
"type": "trait",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Athletics",
"isHeavyWeapon": false
},
"g7oxsNqI": {
"name": "Resist Grapple",
"type": "resist",
"modifier": "",
"override": "Athletics",
"isHeavyWeapon": false
},
"KCvw4z5i": {
"name": "Crush",
"type": "trait",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "Strength",
"isHeavyWeapon": false
},
"1wWLiKwK": {
"name": "Resist Crush",
"type": "resist",
"modifier": "",
"override": "Strength",
"isHeavyWeapon": false
},
"t1Db4fxd": {
"name": "Crush",
"type": "damage",
"modifier": "",
"override": "@str",
"isHeavyWeapon": false
},
"6yiDtU88": {
"name": "Grapple Damage",
"type": "damage",
"dice": null,
"resourcesUsed": null,
"modifier": "",
"override": "@str+d4",
"isHeavyWeapon": false
}
}
},
"bonusDamageDie": 6,
"bonusDamageDice": 1,
"favorite": false,
"templates": {
"cone": false,
"stream": false,
"small": false,
"medium": false,
"large": false
},
"category": "Melee Weapon",
"grants": [],
"grantOn": 1,
"damage": "@str+d4",
"range": "",
"rof": 1,
"ap": 1,
"parry": 0,
"minStr": "d4",
"shots": 0,
"currentShots": 0,
"ammo": "",
"reloadType": "none",
"ppReloadCost": 2,
"trademark": 0,
"isHeavyWeapon": false,
"swid": "bladed-scarf"
},
"effects": [],
"folder": null,
"ownership": {
"default": 0,
"zJNNhVU4bzQxMMA9": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1696794187384,
"modifiedTime": 1702839170624,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "tWWSfEMmLmws6Yb1",
"sort": 300000,
"_key": "!items!tWWSfEMmLmws6Yb1"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
MANIFEST-000109
MANIFEST-000014

View File

@ -1,8 +1,3 @@
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)
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

View File

@ -1,8 +1,8 @@
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)
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)

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,229 @@
{
"name": "Non Character Target",
"type": "npc",
"_id": "U5v4gFHquo0Y1SAq",
"img": "icons/svg/mystery-man.svg",
"system": {
"attributes": {
"agility": {
"die": {
"sides": 4,
"modifier": 0
},
"wild-die": {
"sides": 6
}
},
"smarts": {
"die": {
"sides": 4,
"modifier": 0
},
"wild-die": {
"sides": 6
},
"animal": false
},
"spirit": {
"die": {
"sides": 4,
"modifier": 0
},
"wild-die": {
"sides": 6
},
"unShakeBonus": 0
},
"strength": {
"die": {
"sides": 4,
"modifier": 0
},
"wild-die": {
"sides": 6
},
"encumbranceSteps": 0
},
"vigor": {
"die": {
"sides": 4,
"modifier": 0
},
"wild-die": {
"sides": 6
},
"unStunBonus": 0,
"soakBonus": 0,
"bleedOut": {
"modifier": 0,
"ignoreWounds": false
}
}
},
"stats": {
"speed": {
"runningDie": 6,
"runningMod": 0,
"value": 6
},
"toughness": {
"value": 0,
"armor": 0,
"modifier": 0
},
"parry": {
"value": 0,
"shield": 0,
"modifier": 0
},
"size": 0
},
"details": {
"autoCalcToughness": true,
"autoCalcParry": true,
"archetype": "",
"appearance": "",
"notes": "",
"goals": "",
"biography": {
"value": ""
},
"species": {
"name": ""
},
"currency": 0,
"wealth": {
"die": 6,
"modifier": 0,
"wild-die": 6
},
"conviction": {
"value": 0,
"active": false
}
},
"powerPoints": {},
"fatigue": {
"value": 0,
"max": 2,
"ignored": 0
},
"wounds": {
"value": 0,
"max": 0,
"ignored": 0
},
"woundsOrFatigue": {
"ignored": 0
},
"bennies": {
"value": 0,
"max": 2
},
"advances": {
"mode": "expanded",
"value": 0,
"rank": "Novice",
"details": "",
"list": []
},
"status": {
"isShaken": false,
"isDistracted": false,
"isVulnerable": false,
"isStunned": false,
"isEntangled": false,
"isBound": false,
"isIncapacitated": false
},
"initiative": {
"hasHesitant": false,
"hasLevelHeaded": false,
"hasImpLevelHeaded": false,
"hasQuick": false
},
"additionalStats": {},
"wildcard": false
},
"prototypeToken": {
"name": "Non Character Target",
"displayName": 0,
"actorLink": false,
"appendNumber": false,
"prependAdjective": false,
"texture": {
"src": "icons/svg/mystery-man.svg",
"scaleX": 1,
"scaleY": 1,
"offsetX": 0,
"offsetY": 0,
"rotation": 0
},
"width": 1,
"height": 1,
"lockRotation": false,
"rotation": 0,
"alpha": 1,
"disposition": -1,
"displayBars": 0,
"bar1": {
"attribute": null
},
"bar2": {
"attribute": null
},
"light": {
"alpha": 0.5,
"angle": 360,
"bright": 0,
"coloration": 1,
"dim": 0,
"attenuation": 0.5,
"luminosity": 0.5,
"saturation": 0,
"contrast": 0,
"shadows": 0,
"animation": {
"type": null,
"speed": 5,
"intensity": 5,
"reverse": false
},
"darkness": {
"min": 0,
"max": 1
}
},
"sight": {
"enabled": false,
"range": 0,
"angle": 360,
"visionMode": "basic",
"attenuation": 0.1,
"brightness": 0,
"saturation": 0,
"contrast": 0
},
"detectionModes": [],
"flags": {},
"randomImg": false
},
"items": [],
"effects": [],
"folder": null,
"sort": 0,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1695252634314,
"modifiedTime": 1702839170585,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_key": "!actors!U5v4gFHquo0Y1SAq"
}

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000240
MANIFEST-000014

View File

@ -1,8 +1,3 @@
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)
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

View File

@ -1,8 +1,8 @@
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)
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)

Binary file not shown.

Binary file not shown.

View 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"
}

View File

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

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View File

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

View 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"
}

View File

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

View 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"
}

File diff suppressed because one or more lines are too long

View 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"
}

View File

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

View File

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

View File

@ -0,0 +1,27 @@
{
"name": "Power Effects Item Action",
"type": "script",
"author": "sVoCvBU1knmXzoYe",
"img": "icons/magic/symbols/rune-sigil-black-pink.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n item,\n targets: game.user.targets,\n})",
"folder": null,
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.2.5",
"coreVersion": "11.315",
"createdTime": 1693853383361,
"modifiedTime": 1702959790712,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "AjuA11hQ48UJNwlH",
"sort": 500000,
"_key": "!macros!AjuA11hQ48UJNwlH"
}

View 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

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,25 @@
{
"folder": "hIbrWxg1nDutCSwt",
"name": "Shape Change",
"type": "script",
"_id": "8gxeYSUJ1FQhmJRw",
"author": "sVoCvBU1knmXzoYe",
"img": "icons/magic/symbols/runes-star-blue.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Shape Change'\n})",
"sort": 100000,
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1695618313958,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_key": "!macros!8gxeYSUJ1FQhmJRw"
}

View File

@ -0,0 +1,27 @@
{
"name": "Sloth/Speed",
"type": "script",
"author": "sVoCvBU1knmXzoYe",
"img": "icons/skills/movement/feet-winged-sandals-tan.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Sloth/Speed'\n})",
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1677996503821,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"folder": "hIbrWxg1nDutCSwt",
"ownership": {
"default": 0,
"sVoCvBU1knmXzoYe": 3
},
"_id": "uWF4I2mnDkV8NZ6j",
"sort": 500000,
"_key": "!macros!uWF4I2mnDkV8NZ6j"
}

View File

@ -0,0 +1,27 @@
{
"name": "Smite",
"type": "script",
"scope": "global",
"author": "R9ZgY0IvWl8ovIuT",
"img": "systems/swade/assets/icons/status/status_smite.svg",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Smite'\n})",
"flags": {
"core": {}
},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1677548889704,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "C1vGk7AKQDpcvKyP",
"folder": "hIbrWxg1nDutCSwt",
"sort": 1400000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!macros!C1vGk7AKQDpcvKyP"
}

View File

@ -0,0 +1,25 @@
{
"name": "Summon Ally",
"type": "script",
"author": "R9ZgY0IvWl8ovIuT",
"img": "icons/magic/symbols/runes-star-orange.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Summon Ally'\n})",
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1677996503821,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"_id": "RV09eJi9iG5bfupo",
"folder": "hIbrWxg1nDutCSwt",
"sort": 1000000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!macros!RV09eJi9iG5bfupo"
}

View File

@ -0,0 +1,25 @@
{
"name": "Summon Animal",
"type": "script",
"_id": "745gcs8ytsCLPXe1",
"author": "R9ZgY0IvWl8ovIuT",
"img": "icons/magic/symbols/mask-yellow-orange.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Summon Animal'\n})",
"folder": "hIbrWxg1nDutCSwt",
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1694403406793,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"sort": 800000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!macros!745gcs8ytsCLPXe1"
}

View File

@ -0,0 +1,25 @@
{
"name": "Summon Monster",
"type": "script",
"_id": "V8r5hugGBQfqlhYt",
"author": "R9ZgY0IvWl8ovIuT",
"img": "icons/magic/symbols/mask-metal-silver-white.webp",
"scope": "global",
"command": "game.modules.get('swade-mb-helpers').api.powerEffects({\n token,\n targets: game.user.targets,\n name: 'Summon Monster'\n})",
"folder": "hIbrWxg1nDutCSwt",
"flags": {},
"_stats": {
"systemId": "swade",
"systemVersion": "3.1.4",
"coreVersion": "11.311",
"createdTime": 1694403446899,
"modifiedTime": 1696209757148,
"lastModifiedBy": "sVoCvBU1knmXzoYe"
},
"sort": 1300000,
"ownership": {
"default": 0,
"R9ZgY0IvWl8ovIuT": 3
},
"_key": "!macros!V8r5hugGBQfqlhYt"
}

Some files were not shown because too many files have changed in this diff Show More