some updates

This commit is contained in:
dscarpac 2024-07-06 01:27:46 -05:00
parent 592e7ecc37
commit 2945aeefef
19 changed files with 84 additions and 14 deletions

View File

@ -17,14 +17,22 @@ SHOW_SINGLE_RELEASE --@type: boolean
- this entry allows releasing a single token - this entry allows releasing a single token
- example usage: "Holy Spear" (to keep the other tokens and just release one) - example usage: "Holy Spear" (to keep the other tokens and just release one)
SHOW_UP_TO_MULTI_RELEASE --@type: number (maximum amount of tokens to release at once)
- enables an entry in the context menu
- this entry allows releasing of multiple tokens at once, to the maximum number
- does not fail if there are fewer than the maximum sealed
- example usage: "Nephthys" (to release up to 3 bless tokens at once)
SHOW_MULTI_RELEASE --@type: number (amount of tokens to release at once) SHOW_MULTI_RELEASE --@type: number (amount of tokens to release at once)
- enables an entry in the context menu - enables an entry in the context menu
- this entry allows releasing of multiple tokens at once - this entry allows releasing of multiple tokens at once
- example usage: "Nephthys" (to release 3 bless tokens at once) - fails if not enough tokens are sealed
- example usage: Maybe a Custom Card?
SHOW_MULTI_RETURN --@type: number (amount of tokens to return to pool at once) SHOW_MULTI_RETURN --@type: number (amount of tokens to return to pool at once)
- enables an entry in the context menu - enables an entry in the context menu
- this entry allows returning tokens to the token pool - this entry allows returning tokens to the token pool
- fails if not enough tokens are sealed
- example usage: "Nephthys" (to return 3 bless tokens at once) - example usage: "Nephthys" (to return 3 bless tokens at once)
SHOW_MULTI_SEAL --@type: number (amount of tokens to seal at once) SHOW_MULTI_SEAL --@type: number (amount of tokens to seal at once)
@ -79,10 +87,25 @@ local guidReferenceApi = require("core/GUIDReferenceApi")
local playermatApi = require("playermat/PlayermatApi") local playermatApi = require("playermat/PlayermatApi")
local tokenArrangerApi = require("accessories/TokenArrangerApi") local tokenArrangerApi = require("accessories/TokenArrangerApi")
local MAX_SEALED = MAX_SEALED or nil
local sealedTokens = {} local sealedTokens = {}
local ID_URL_MAP = {} local ID_URL_MAP = {}
local tokensInBag = {} local tokensInBag = {}
-- XML background color for each token for label when stacked
local tokenColor = {
["Skull"] = "#4A0400E6",
["Cultist"] = "#173B0BE6",
["Tablet"] = "#1D2238E6",
["Elder Thing"] = "#4D2331E6",
["Auto-fail"] = "#9B0004E6",
["Bless"] = "#9D702CE6",
["Curse"] = "#633A84E6",
["Frost"] = "#404450E6",
["Elder Sign"] = "#50A8CEE6",
[""] = "#77674DE6"
}
function onSave() return JSON.encode(sealedTokens) end function onSave() return JSON.encode(sealedTokens) end
function onLoad(savedData) function onLoad(savedData)
@ -95,12 +118,15 @@ end
-- builds the context menu -- builds the context menu
function generateContextMenu() function generateContextMenu()
-- conditional single or multi release options -- conditional single or multi release options
if SHOW_SINGLE_RELEASE then if MAX_SEALED > 1 then
self.addContextMenuItem("Release token", releaseOneToken) self.addContextMenuItem("Release one token", releaseOneToken)
end
if SHOW_UP_TO_MULTI_RELEASE then
self.addContextMenuItem("Release max " .. SHOW_UP_TO_MULTI_RELEASE .. " tokens", releaseUpToMultipleTokens)
elseif SHOW_MULTI_RELEASE then elseif SHOW_MULTI_RELEASE then
self.addContextMenuItem("Release " .. SHOW_MULTI_RELEASE .. " token(s)", releaseMultipleTokens) self.addContextMenuItem("Release " .. SHOW_MULTI_RELEASE .. " token(s)", releaseMultipleTokens)
else else
self.addContextMenuItem("Release token(s)", releaseAllTokens) self.addContextMenuItem("Release all tokens", releaseAllTokens)
end end
if RESOLVE_TOKEN then if RESOLVE_TOKEN then
@ -175,6 +201,10 @@ end
-- seals the named token on this card -- seals the named token on this card
function sealToken(name, playerColor) function sealToken(name, playerColor)
if #sealedTokens == MAX_SEALED then
printToColor("Cannot seal any more tokens on this card", playerColor, "Red")
return
end
if not chaosBagApi.canTouchChaosTokens() then return end if not chaosBagApi.canTouchChaosTokens() then return end
local chaosbag = chaosBagApi.findChaosBag() local chaosbag = chaosBagApi.findChaosBag()
for i, obj in ipairs(chaosbag.getObjects()) do for i, obj in ipairs(chaosbag.getObjects()) do
@ -190,7 +220,9 @@ function sealToken(name, playerColor)
tokenArrangerApi.layout() tokenArrangerApi.layout()
if name == "Bless" or name == "Curse" then if name == "Bless" or name == "Curse" then
blessCurseManagerApi.sealedToken(name, guid) blessCurseManagerApi.sealedToken(name, guid)
addStackSize(token, name) end
if MAX_SEALED > 1 then
updateStackSize(token, name)
end end
end end
}) })
@ -223,6 +255,26 @@ function releaseMultipleTokens(playerColor)
end end
end end
-- release up to multiple tokens at once with no minimum
function releaseUpToMultipleTokens(playerColor)
if #sealedTokens == 0 then
printToColor("Not enough tokens sealed.", playerColor)
return
end
if #sealedTokens < SHOW_UP_TO_MULTI_RELEASE then
local numRemoved = #sealedTokens
for i = 1, #sealedTokens do
putTokenAway(table.remove(sealedTokens))
end
printToColor("Releasing " .. numRemoved .. " tokens", playerColor)
else
for i = 1, SHOW_UP_TO_MULTI_RELEASE do
putTokenAway(table.remove(sealedTokens))
end
printToColor("Releasing " .. SHOW_UP_TO_MULTI_RELEASE .. " tokens", playerColor)
end
end
-- releases all sealed tokens -- releases all sealed tokens
function releaseAllTokens(playerColor) function releaseAllTokens(playerColor)
if not chaosBagApi.canTouchChaosTokens() then return end if not chaosBagApi.canTouchChaosTokens() then return end
@ -289,12 +341,7 @@ function resolveSealed()
chaosBagApi.drawChaosToken(mat, true, _, guidToBeResolved) chaosBagApi.drawChaosToken(mat, true, _, guidToBeResolved)
end end
function addStackSize(token, name) function updateStackSize(token, name)
if name == "Bless" then
labelColor = "#9D702CE6"
else
labelColor = "#633A84E6"
end
token.UI.setXmlTable({ token.UI.setXmlTable({
{ {
tag = "Panel", tag = "Panel",
@ -304,7 +351,7 @@ function addStackSize(token, name)
rotation = "0 0 180", rotation = "0 0 180",
scale = "0.2 0.2 1", scale = "0.2 0.2 1",
position = "0 0 -12", position = "0 0 -12",
color = labelColor color = tokenColor[name] or "#77674DE6"
}, },
children = { children = {
tag = "Text", tag = "Text",
@ -314,7 +361,7 @@ function addStackSize(token, name)
color = "#ffffff", color = "#ffffff",
outline = "#000000", outline = "#000000",
outlineSize = "8 -8", outlineSize = "8 -8",
text = #sealedTokens text = "x" .. #sealedTokens
} }
} }
} }

View File

@ -2,5 +2,6 @@ VALID_TOKENS = {
["+1"] = true, ["+1"] = true,
["Elder Sign"] = true ["Elder Sign"] = true
} }
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -3,5 +3,6 @@ VALID_TOKENS = {
} }
KEEP_OPEN = true KEEP_OPEN = true
MAX_SEALED = 5
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -2,4 +2,6 @@ VALID_TOKENS = {
["Elder Sign"] = true ["Elder Sign"] = true
} }
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -4,6 +4,7 @@ VALID_TOKENS = {
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
KEEP_OPEN = true KEEP_OPEN = true
MAX_SEALED = 3
RESOLVE_TOKEN = true RESOLVE_TOKEN = true
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -4,6 +4,7 @@ VALID_TOKENS = {
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
KEEP_OPEN = true KEEP_OPEN = true
MAX_SEALED = 3
RESOLVE_TOKEN = true RESOLVE_TOKEN = true
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -3,6 +3,7 @@ VALID_TOKENS = {
} }
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
MAX_SEALED = 10
KEEP_OPEN = true KEEP_OPEN = true
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -4,5 +4,6 @@ VALID_TOKENS = {
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
SHOW_MULTI_SEAL = 2 SHOW_MULTI_SEAL = 2
MAX_SEALED = 10
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -2,8 +2,10 @@ VALID_TOKENS = {
["Bless"] = true ["Bless"] = true
} }
KEEP_OPEN = true
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
SHOW_MULTI_RELEASE = 3 SHOW_UP_TO_MULTI_RELEASE = 3
SHOW_MULTI_RETURN = 3 SHOW_MULTI_RETURN = 3
MAX_SEALED = 10
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -5,5 +5,6 @@ INVALID_TOKENS = {
} }
UPDATE_ON_HOVER = true UPDATE_ON_HOVER = true
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -3,5 +3,6 @@ VALID_TOKENS = {
} }
KEEP_OPEN = true KEEP_OPEN = true
MAX_SEALED = 3
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -4,5 +4,6 @@ VALID_TOKENS = {
KEEP_OPEN = true KEEP_OPEN = true
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
MAX_SEALED = 5
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -2,4 +2,6 @@ VALID_TOKENS = {
["Auto-fail"] = true ["Auto-fail"] = true
} }
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -2,4 +2,6 @@ VALID_TOKENS = {
["Elder Sign"] = true ["Elder Sign"] = true
} }
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -3,5 +3,6 @@ VALID_TOKENS = {
} }
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
MAX_SEALED = 4 -- Core Set is component-limited to 4 '0' tokens
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -4,5 +4,6 @@ VALID_TOKENS = {
KEEP_OPEN = true KEEP_OPEN = true
SHOW_SINGLE_RELEASE = true SHOW_SINGLE_RELEASE = true
MAX_SEALED = 5
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -5,4 +5,6 @@ VALID_TOKENS = {
["Elder Thing"] = true, ["Elder Thing"] = true,
} }
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -3,5 +3,6 @@ VALID_TOKENS = {
} }
RESOLVE_TOKEN = true RESOLVE_TOKEN = true
MAX_SEALED = 1
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")

View File

@ -5,5 +5,6 @@ INVALID_TOKENS = {
UPDATE_ON_HOVER = true UPDATE_ON_HOVER = true
KEEP_OPEN = true KEEP_OPEN = true
MAX_SEALED = 3
require("playercards/CardsThatSealTokens") require("playercards/CardsThatSealTokens")