2.2.0 release #38

Merged
mike merged 8 commits from develop into main 2023-11-21 04:02:09 +00:00
Showing only changes of commit 0fba8a73b0 - Show all commits

View File

@ -7,26 +7,20 @@ export async function requestRollFromTokens (tokens, rollType, rollDesc, options
// options:
// title: title for the roll dialog. Will have "- {{ token name }}"
// appended
// flavour: flavor text for the roll card. Defaults to title
// mods: list of modifiers {label: "", value: 0, ignore: false}
// modCallback: callback function that takes a token and returns a list of
// modifiers in the same format as modifiers, above
options.requestingUserId = shim.user.id
const requestingUser = shim.user
const title = options?.title || `${requestingUser.name} requests a ${rollDesc} roll`
const flavour = options?.flavour || options?.flavor || title
const promises = []
for (const token in tokens) {
for (const token of tokens) {
const owner = shim.warpgateUtil.firstOwner(token.document)
promises.append(shim.socket.executeAsUser(requestTokenRoll, owner.id,
token.scene.id, token.id, rollType, rollDesc, options))
const rollOpts = {
title: `${title} - ${token.name}`,
flavour
}
results = await Promise.allSettled(promises)
return results
}
export async function requestTokenRoll (
sceneId, tokenId, rollType, rollDesc, options
) {
const requestingUser = shim.users.get(options.requestingUserId)
const scene = shim.scenes.get(sceneId)
const token = scene.tokens.get(tokenId)
const additionalMods = []
if ('mods' in options) {
for (const mod of options.mods) {
@ -39,20 +33,29 @@ export async function requestTokenRoll (
additionalMods.push(tm)
}
}
let rollFunc = token.actor.rollAttribute
let rollId = rollDesc.toLowerCase()
if (rollType === 'skill') {
rollFunc = token.actor.rollSkill
rollId = token.actor.items.find(i => (
(i.system.swid === rollDesc.toLowerCase() ||
i.name.toLowerCase() === rollDesc.toLowerCase()) && i.type === 'skill'))
}
const rollOpts = {
title: options?.title || `${requestingUser.name} requests a ${rollDesc} roll`
}
if (additionalMods.length > 0) {
rollOpts.additionalMods = additionalMods
}
const result = await rollFunc(rollId, rollOpts)
promises.push(shim.socket.executeAsUser(requestTokenRoll, owner.id,
token.scene.id, token.id, rollType, rollDesc, rollOpts))
}
const results = await Promise.allSettled(promises)
return results
}
export async function requestTokenRoll (
sceneId, tokenId, rollType, rollDesc, options
) {
const scene = shim.scenes.get(sceneId)
const token = scene.tokens.get(tokenId)
let rollFunc = 'rollAttribute'
let rollId = rollDesc.toLowerCase()
if (rollType === 'skill') {
rollFunc = 'rollSkill'
rollId = token.actor.items.filter(i => i.type === 'skill').find(i => (
i.system.swid === rollDesc.toLowerCase() ||
i.name.toLowerCase() === rollDesc.toLowerCase()))?.id
}
const result = await token.actor[rollFunc](rollId, options)
return { sceneId, tokenId, result }
}