updated havoc
This commit is contained in:
parent
0fba8a73b0
commit
9eb7f4c5ea
@ -1,6 +1,6 @@
|
|||||||
import { api } from './api.js'
|
import { api } from './api.js'
|
||||||
import { requestTokenRoll } from './helpers.js'
|
import { requestTokenRoll } from './helpers.js'
|
||||||
import { havocResult, shapeChangeOnDismiss } from './powerEffects.js'
|
import { shapeChangeOnDismiss } from './powerEffects.js'
|
||||||
import { log, shim } from './shim.js'
|
import { log, shim } from './shim.js'
|
||||||
|
|
||||||
const moduleName = 'swade-mb-helpers'
|
const moduleName = 'swade-mb-helpers'
|
||||||
@ -25,7 +25,6 @@ Hooks.on('ready', () => {
|
|||||||
|
|
||||||
Hooks.on('socketlib.ready', () => {
|
Hooks.on('socketlib.ready', () => {
|
||||||
const socket = socketlib.registerModule('swade-mb-helpers')
|
const socket = socketlib.registerModule('swade-mb-helpers')
|
||||||
socket.register('havocResult', havocResult)
|
|
||||||
socket.register('requestTokenRoll', requestTokenRoll)
|
socket.register('requestTokenRoll', requestTokenRoll)
|
||||||
shim._socket = socket
|
shim._socket = socket
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { CONST, log, shim } from './shim.js'
|
import { CONST, log, shim } from './shim.js'
|
||||||
|
import { requestRollFromTokens } from './helpers.js'
|
||||||
|
|
||||||
class PowerEffect {
|
class PowerEffect {
|
||||||
constructor (token, targets) {
|
constructor (token, targets) {
|
||||||
@ -556,13 +557,32 @@ class HavocEffect extends TargetedPowerEffect {
|
|||||||
|
|
||||||
async prepResult () {
|
async prepResult () {
|
||||||
this.raise = (this.buttons === 'raise')
|
this.raise = (this.buttons === 'raise')
|
||||||
|
this.effectDocs.unshift(shim.getStatus('SWADE.Distr', 'Distracted'))
|
||||||
}
|
}
|
||||||
|
|
||||||
async applyResult () {
|
async applyResult () {
|
||||||
await super.applyResult()
|
await super.applyResult()
|
||||||
for (const target of this.targets) {
|
await shim.wait(1000)
|
||||||
await havocResult(target.id, this.raise)
|
|
||||||
|
const resistMods = function (token) {
|
||||||
|
const mods = []
|
||||||
|
if (token.actor.effects.find(e => e.name === 'Flying')) {
|
||||||
|
mods.push({ label: 'Flying', value: -2 })
|
||||||
|
}
|
||||||
|
return mods
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
title: 'Resisting Havoc!',
|
||||||
|
flavour: 'Havoc!',
|
||||||
|
mods: [],
|
||||||
|
modCallback: resistMods
|
||||||
|
}
|
||||||
|
if (this.raise) {
|
||||||
|
options.mods.push({ label: 'vs. Raise', value: -2 })
|
||||||
|
}
|
||||||
|
|
||||||
|
await requestRollFromTokens(this.targets, 'attribute', 'strength', options)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1441,30 +1461,3 @@ export async function shapeChangeOnDismiss (data) {
|
|||||||
await token.update(update)
|
await token.update(update)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function havocResult (tokenId, isRaise) {
|
|
||||||
const token = shim.canvas.tokens.get(tokenId)
|
|
||||||
if (!token) {
|
|
||||||
log('Unable to find token with id ', tokenId)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const owner = shim.warpgateUtil.firstOwner(token.document)
|
|
||||||
if (owner !== shim.user) {
|
|
||||||
shim.socket.executeAsUser(havocResult, owner.id, tokenId, isRaise)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const effect = shim.getStatus('SWADE.Distr', 'Distracted')
|
|
||||||
await shim.applyActiveEffects(token, [effect])
|
|
||||||
log(`apply ${effect.label} to ${token.document.name}, raise: ${isRaise}`)
|
|
||||||
const opts = {
|
|
||||||
flavour: 'Resist Havoc',
|
|
||||||
additionalMods: []
|
|
||||||
}
|
|
||||||
if (isRaise) {
|
|
||||||
opts.additionalMods.push({ label: 'vs. Raise', value: -2 })
|
|
||||||
}
|
|
||||||
if (token.actor.effects.find(e => e.name === 'Flying')) {
|
|
||||||
opts.additionalMods.push({ label: 'Flying', value: -2 })
|
|
||||||
}
|
|
||||||
token.actor.rollAttribute('strength', opts)
|
|
||||||
}
|
|
||||||
|
|||||||
@ -116,6 +116,10 @@ export class shim {
|
|||||||
await warpgate.mutate(token.document, mutation, {}, mutateOptions)
|
await warpgate.mutate(token.document, mutation, {}, mutateOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static wait (ms) {
|
||||||
|
return warpgate.wait(ms)
|
||||||
|
}
|
||||||
|
|
||||||
static warpgateMenu (menuData, menuOptions) {
|
static warpgateMenu (menuData, menuOptions) {
|
||||||
return warpgate.menu(menuData, menuOptions)
|
return warpgate.menu(menuData, menuOptions)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user