53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
export class helpers {
|
|
static runOnTargetOrSelectedTokens (runFunc) {
|
|
let tokens = []
|
|
const targets = Array.from(game.user.targets)
|
|
if (targets.length > 0) {
|
|
tokens = targets
|
|
} else if (canvas.tokens.controlled.length > 0) {
|
|
tokens = canvas.tokens.controlled
|
|
}
|
|
if (tokens.length > 0) {
|
|
runFunc(tokens)
|
|
} else {
|
|
ui.notifications.error('Please select or target a token')
|
|
}
|
|
}
|
|
|
|
static createEffectDocument (icon, name, durationRounds, changes) {
|
|
const effectData = {
|
|
icon,
|
|
id: name,
|
|
label: name,
|
|
duration: { rounds: 5 },
|
|
flags: {
|
|
swade: {
|
|
expiration: CONFIG.SWADE.CONST.STATUS_EFFECT_EXPIRATION.EndOfTurnPrompt,
|
|
loseTurnOnHold: true
|
|
}
|
|
},
|
|
changes
|
|
}
|
|
return effectData
|
|
}
|
|
|
|
static createMutationWithEffect (icon, name, durationRounds, changes) {
|
|
const effect = helpers.createEffectDocument(icon, name, durationRounds, changes)
|
|
const mutate = {
|
|
embedded: { ActiveEffect: {} }
|
|
}
|
|
mutate.embedded.ActiveEffect[name] = effect
|
|
return mutate
|
|
}
|
|
|
|
static defaultMutationOptions (name) {
|
|
const mutateOptions = {
|
|
comparisonKeys: { ActiveEffect: 'label' },
|
|
name,
|
|
permanent: false,
|
|
description: name
|
|
}
|
|
return mutateOptions
|
|
}
|
|
}
|