Compare commits

...

5 Commits

Author SHA1 Message Date
Adam Goldsmith ff647aeaae Re-add `arkhamdb_reinit` to deck importer
Build and Release / Build and Release (push) Successful in 32s Details
2024-04-28 10:52:15 -04:00
Adam Goldsmith 2a0701c8f4 Switch to JS based release action
Build and Release / Build and Release (push) Successful in 32s Details
2024-04-28 10:12:41 -04:00
Adam Goldsmith c3f686e633 Remove player hand token discard zones, as they are annoying
Build and Release / Build and Release (push) Failing after 2m28s Details
2024-04-28 09:50:31 -04:00
Adam Goldsmith e99f60bf3f Merge branch 'master' into patches 2024-04-28 09:50:02 -04:00
Adam Goldsmith f3c9f3af0b 3.7.0 2024-03-10 09:56:22 -04:00
444 changed files with 21825 additions and 21193 deletions

View File

@ -20,14 +20,10 @@ jobs:
run: tts_yaml_unpacker pack unpacked.yaml "Arkham SCE Adam_${{ github.ref_name }}.json"
- name: zip json
run: python -m zipfile -c "Arkham SCE Adam_${{ github.ref_name }}.zip" "Arkham SCE Adam_${{ github.ref_name }}.json"
- name: setup go
uses: actions/setup-go@v4
with:
go-version: '>=1.20.1'
- name: Create Release
uses: https://gitea.com/actions/release-action@main
uses: akkuman/gitea-release-action@v1
env:
NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18
with:
api_key: '${{secrets.RELEASE_TOKEN}}'
files: "Arkham SCE Adam_${{ github.ref_name }}.zip"
title: "Patched ${{ github.ref_name }}"
name: "Patched ${{ github.ref_name }}"

File diff suppressed because it is too large Load Diff

View File

@ -73,7 +73,6 @@
<!-- window to select downloadable content -->
<VerticalLayout id="downloadWindow"
visibility="Admin"
color="black"
active="false"
height="800"
@ -652,7 +651,6 @@
<!-- Option Panel -->
<TableLayout id="optionPanel"
class="window"
visibility="Admin"
rectAlignment="LowerRight"
offsetXY="-50 80"
raycastTarget="true">

View File

@ -224,7 +224,7 @@ CustomUIAssets:
- Name: box-cover-mask-wide
Type: 0
URL: http://cloud-3.steamusercontent.com/ugc/2115061298538827369/A20C2ECB8ECDC1B0AD8B2B38F68CA1C1F5E07D37/
Date: Fri Feb 16 18:27:41 UTC 2024
Date: Mon Mar 4 23:52:37 CET 2024
DecalPallet:
- ImageURL: http://cloud-3.steamusercontent.com/ugc/1474319121424323663/BC5570ECF747F1B30224461B576E8B0FE7FA5F33/
Name: Achivement Checkmark
@ -233,7 +233,7 @@ DecalPallet:
Name: Victory Display
Size: 15
Decals: []
EpochTime: 1708108061
EpochTime: 1709592757
GameComplexity: ''
GameMode: Arkham Horror LCG - Super Complete Edition
GameType: ''
@ -284,7 +284,7 @@ Lighting:
LutIndex: 0
ReflectionIntensity: 1
LuaScript: !include 'unpacked.ttslua'
LuaScriptState: '{"acknowledgedUpgradeVersions":[],"chaosTokensGUID":[],"optionPanel":{"cardLanguage":"en","changePlayAreaImage":false,"playAreaConnectionColor":{"a":1,"b":0.4,"g":0.4,"r":0.4},"playAreaConnections":true,"playAreaSnapTags":true,"showAttachmentHelper":false,"showCleanUpHelper":false,"showCYOA":false,"showDisplacementTool":false,"showDrawButton":false,"showHandHelper":[],"showSearchAssistant":[],"showTitleSplash":true,"useClueClickers":false,"useResourceCounters":"disabled","useSnapTags":true}}'
LuaScriptState: '{"acknowledgedUpgradeVersions":[],"chaosTokensGUID":[],"optionPanel":{"cardLanguage":"en","changePlayAreaImage":false,"playAreaConnectionColor":{"a":1,"b":0.4,"g":0.4,"r":0.4},"playAreaConnections":true,"playAreaSnapTags":true,"showAttachmentHelper":false,"showCleanUpHelper":false,"showCYOA":false,"showDisplacementTool":false,"showDrawButton":false,"showHandHelper":false,"showSearchAssistant":false,"showTitleSplash":true,"useClueClickers":false,"useResourceCounters":"disabled","useSnapTags":true}}'
MusicPlayer:
AudioLibrary:
- Item1: http://cloud-3.steamusercontent.com/ugc/784110538847453001/4481D1CC5684FCF04AB143954DEFE09E94BF5CEB/
@ -499,10 +499,6 @@ ObjectStates:
- !include 'unpacked/Custom_Tile Token Remover 39b175.yaml'
- !include 'unpacked/Custom_Tile Token Remover 2ba7a5.yaml'
- !include 'unpacked/Custom_Tile Token Remover 0a5a29.yaml'
- !include 'unpacked/ScriptingTrigger TokenDiscardZone 457de3.yaml'
- !include 'unpacked/ScriptingTrigger TokenDiscardZone 457de4.yaml'
- !include 'unpacked/ScriptingTrigger TokenDiscardZone 457de5.yaml'
- !include 'unpacked/ScriptingTrigger TokenDiscardZone 457de6.yaml'
- !include 'unpacked/Custom_Tile Decoration - Map 6161b4.yaml'
- !include 'unpacked/Custom_Model_Bag Rulebooks, Guides and Tablets fcfa7f.yaml'
- !include 'unpacked/BlockRectangle Table Divider 612072.yaml'
@ -552,7 +548,7 @@ PlayerCounts:
PlayingTime:
- 0
- 0
SaveName: Arkham SCE - 3.6.0
SaveName: Arkham SCE - 3.7.0
Sky: Sky_Museum
SkyURL: https://i.imgur.com/GkQqaOF.jpg
SnapPoints:
@ -620,70 +616,6 @@ SnapPoints:
x: -3.85
y: 1.58
z: -10.39
- Position:
x: -45.3
y: 1.48
z: 31.67
- Position:
x: -45.3
y: 1.48
z: 29.73
- Position:
x: -45.3
y: 1.48
z: 27.8
- Position:
x: -45.3
y: 1.48
z: 25.86
- Position:
x: -45.3
y: 1.48
z: 23.93
- Position:
x: -45.3
y: 1.48
z: 21.99
- Position:
x: -45.3
y: 1.48
z: 20.06
- Position:
x: -45.3
y: 1.48
z: -20.62
- Position:
x: -45.3
y: 1.48
z: -22.55
- Position:
x: -45.3
y: 1.48
z: -24.49
- Position:
x: -45.3
y: 1.48
z: -26.43
- Position:
x: -45.3
y: 1.48
z: -28.36
- Position:
x: -45.3
y: 1.48
z: -30.3
- Position:
x: -45.3
y: 1.48
z: -32.23
- Position:
x: -28.64
y: 1.48
z: -38.65
Rotation:
x: 0
y: 315
z: 0
- Position:
x: -56.24
y: 1.49

View File

@ -61,6 +61,50 @@ function onLoad()
self.addContextMenuItem("Update card index", function() allCardsBagApi.rebuildIndexForHotfix() end)
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
end)
__bundle_register("playercards/AllCardsBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local AllCardsBagApi = {}
@ -137,48 +181,4 @@ do
return AllCardsBagApi
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
end)
return __bundle_require("__root")

View File

@ -41,6 +41,9 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (
return require, loaded, register, modules
end)(nil)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/AllCardsBag")
end)
__bundle_register("playercards/AllCardsBag", function(require, _LOADED, __bundle_register, __bundle_modules)
local cardIdIndex = { }
local classAndLevelIndex = { }
@ -176,7 +179,6 @@ end
function buildSupplementalIndexes()
for cardId, card in pairs(cardIdIndex) do
local cardData = card.data
local cardMetadata = card.metadata
-- If the ID key and the metadata ID don't match this is a duplicate card created by an
-- alternate_id, and we should skip it
@ -414,7 +416,4 @@ function isBasicWeakness(cardMetadata)
and cardMetadata.basicWeaknessCount > 0
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/AllCardsBag")
end)
return __bundle_require("__root")

View File

@ -25,47 +25,47 @@ ContainedObjects:
46b147.yaml'
- !include 'Bag All Player Cards 15bb07/Card If it bleeds... acf2b0.yaml'
- !include 'Bag All Player Cards 15bb07/Card Beat Cop (2) 7001be.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Book of Living Myths c5fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Weeping Yurei 541bd9.yaml'
- !include 'Bag All Player Cards 15bb07/Card Book of Living Myths c5fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/Card Weeping Yurei 541bd9.yaml'
- !include "Bag All Player Cards 15bb07/CardCustom K\u014Dhaku Narukami cea427.yaml"
- !include "Bag All Player Cards 15bb07/CardCustom K\u014Dhaku Narukami 54eaa7.yaml"
- !include 'Bag All Player Cards 15bb07/CardCustom Ad Hoc c9fb2f.yaml'
- !include "Bag All Player Cards 15bb07/Card K\u014Dhaku Narukami 54eaa7.yaml"
- !include 'Bag All Player Cards 15bb07/Card Ad Hoc c9fb2f.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hasty Repairs 0821d5.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Wilson Richards ceb426.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Wilson Richards 55eab5.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Ancestral Token c1fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yoth) 84ad64.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Aetheric Current (Yuggoth) 84ad65.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Failed Experiment acd281.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Flux Stabilizer 55990a.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Kate Winthrop ce2322.yaml'
- !include 'Bag All Player Cards 15bb07/Card Wilson Richards 55eab5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ancestral Token c1fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/Card Aetheric Current (Yoth) 84ad64.yaml'
- !include 'Bag All Player Cards 15bb07/Card Aetheric Current (Yuggoth) 84ad65.yaml'
- !include 'Bag All Player Cards 15bb07/Card Failed Experiment acd281.yaml'
- !include 'Bag All Player Cards 15bb07/Card Flux Stabilizer 55990a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Kate Winthrop ce2322.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Kate Winthrop ce2323.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hatchet (1) 2ea0d3.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Token of Faith (3) 2ea0d1.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Transmogrify 9965dd.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Absolution aef183.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Confound (3) 9965de.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Strong-Armed (1) 294d6.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Survival Technique (2) 2ea0d4.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Scrimshaw Charm c1fb2e.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Vamp (3) add233.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Well-Dressed c6ac33.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hatchet (1) 2ea0d3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Token of Faith (3) 2ea0d1.yaml'
- !include 'Bag All Player Cards 15bb07/Card Transmogrify 9965dd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Absolution aef183.yaml'
- !include 'Bag All Player Cards 15bb07/Card Confound (3) 9965de.yaml'
- !include 'Bag All Player Cards 15bb07/Card Strong-Armed (1) 294d6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Survival Technique (2) 2ea0d4.yaml'
- !include 'Bag All Player Cards 15bb07/Card Scrimshaw Charm c1fb2e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Vamp (3) add233.yaml'
- !include 'Bag All Player Cards 15bb07/Card Well-Dressed c6ac33.yaml'
- !include 'Bag All Player Cards 15bb07/Card Fine Tuning (1) 103fbd.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Prismatic Spectacles (2) 3adcf5.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Drain Essence 9965aa.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Fake Credentials acd38d.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Cat Mask 847ed6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Prismatic Spectacles (2) 3adcf5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Drain Essence 9965aa.yaml'
- !include 'Bag All Player Cards 15bb07/Card Fake Credentials acd38d.yaml'
- !include 'Bag All Player Cards 15bb07/Card Cat Mask 847ed6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hard Times 876557.yaml'
- !include 'Bag All Player Cards 15bb07/Card Pete''s Guitar 876557.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel Front) 5294c3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel Back) 5294c3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ashcan Pete (Parallel) 5294c3.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Eldritch Tongue e8765a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Eldritch Tongue e8765a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Tinker 102fbd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hand-Eye Coordination (1) 102fcd.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom False Surrender adf28e.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Purified 294d6a.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom The Key of Solomon (4) ae54c6.yaml'
- !include 'Bag All Player Cards 15bb07/Card False Surrender adf28e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Purified 294d6a.yaml'
- !include 'Bag All Player Cards 15bb07/Card The Key of Solomon (4) ae54c6.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom The Necronomicon 5b2e10.yaml'
- !include 'Bag All Player Cards 15bb07/Card Roland''s .38 Special 4edb91.yaml'
- !include 'Bag All Player Cards 15bb07/Card Stubborn Detective 4ea68b.yaml'
@ -1505,6 +1505,11 @@ ContainedObjects:
- !include 'Bag All Player Cards 15bb07/Card Amina Zidane 458edc.yaml'
- !include 'Bag All Player Cards 15bb07/Card Amina Zidane 4c2a3d.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom The Raven Quill Upgrade Sheet 23b96a.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hypnotic Gaze (2) (Taboo) e2bc50.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Old Keyring (3) (Taboo) e7d989.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Pay Day (1) (Taboo) 9f0b35.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Scavenging (2) (Taboo) ff4aeb.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Scavenging (Taboo) 1b76c8.yaml'
- !include 'Bag All Player Cards 15bb07/Card Deck of Possibilities fefdfa.yaml'
- !include "Bag All Player Cards 15bb07/Card Isamara Ordo\xF1ez 860cd7.yaml"
- !include 'Bag All Player Cards 15bb07/Card Jenny Barnes 48b174.yaml'
@ -1617,77 +1622,77 @@ ContainedObjects:
- !include 'Bag All Player Cards 15bb07/Card Final Rhapsody 561775.yaml'
- !include 'Bag All Player Cards 15bb07/Card Jim Culver (Parallel Back) aba863.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom The Beyond 37ab47.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Devil (2) 2a0ba5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Devil (2) 2a0ba5.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi cea425.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Alessandra Zorzi 54eaa5.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Zamacona 541ba9.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Wicked Athame c9fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Wolf Mask 975d89.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Beguile 019526.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Ofuda 860c1e.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Providential (2) 2cf42a.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Vamp add232.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom I''ll Pay You Back! 40e1ca.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Occult Reliquary (3) acd0c2.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Grift df75d7.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Guided by Faith aef282.yaml'
- !include 'Bag All Player Cards 15bb07/Card Alessandra Zorzi 54eaa5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Zamacona 541ba9.yaml'
- !include 'Bag All Player Cards 15bb07/Card Wicked Athame c9fb1f.yaml'
- !include 'Bag All Player Cards 15bb07/Card Wolf Mask 975d89.yaml'
- !include 'Bag All Player Cards 15bb07/Card Beguile 019526.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ofuda 860c1e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Providential (2) 2cf42a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Vamp add232.yaml'
- !include 'Bag All Player Cards 15bb07/Card I''ll Pay You Back! 40e1ca.yaml'
- !include 'Bag All Player Cards 15bb07/Card Occult Reliquary (3) acd0c2.yaml'
- !include 'Bag All Player Cards 15bb07/Card Grift df75d7.yaml'
- !include 'Bag All Player Cards 15bb07/Card Guided by Faith aef282.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson 3764cc.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson 3764cd.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson (Assistant) 3764ce.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hank Samson (Warden) 3764cf.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Hold Up aef182.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Pelt Shipment aa11bc.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Stir the Pot (5) add252.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Snitch (2) add242.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hank Samson 3764cd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hank Samson (Assistant) 3764ce.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hank Samson (Warden) 3764cf.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hold Up aef182.yaml'
- !include 'Bag All Player Cards 15bb07/Card Pelt Shipment aa11bc.yaml'
- !include 'Bag All Player Cards 15bb07/Card Stir the Pot (5) add252.yaml'
- !include 'Bag All Player Cards 15bb07/Card Snitch (2) add242.yaml'
- !include 'Bag All Player Cards 15bb07/Card Where''s Pa 9aba43.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Persistence (1) 2cf51.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Stouthearted 265ad2.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Control Variable 133868.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Blackmail File de456d.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Speak to the Dead c763aa.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Accursed e91c5e.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Throw the Book at Them! d617ab.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Fox Mask 4144cd.yaml'
- !include 'Bag All Player Cards 15bb07/CardCustom Mouse Mask 32ad21.yaml'
- !include 'Bag All Player Cards 15bb07/Card Task Force (0) a5c06a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Persistence (1) 2cf51.yaml'
- !include 'Bag All Player Cards 15bb07/Card Stouthearted 265ad2.yaml'
- !include 'Bag All Player Cards 15bb07/Card Control Variable 133868.yaml'
- !include 'Bag All Player Cards 15bb07/Card Blackmail File de456d.yaml'
- !include 'Bag All Player Cards 15bb07/Card Speak to the Dead c763aa.yaml'
- !include 'Bag All Player Cards 15bb07/Card Accursed e91c5e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Throw the Book at Them! d617ab.yaml'
- !include 'Bag All Player Cards 15bb07/Card Fox Mask 4144cd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Mouse Mask 32ad21.yaml'
- !include 'Bag All Player Cards 15bb07/Card Task Force a5c06a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Microscope (4) fbd296.yaml'
- !include 'Bag All Player Cards 15bb07/Card Back Injury f6c482.yaml'
- !include 'Bag All Player Cards 15bb07/Card Lightfooted (0) fe1fb6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Lightfooted fe1fb6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bewitching (3) db335c.yaml'
- !include 'Bag All Player Cards 15bb07/Card Flurry of Blows (5) 9e7bc8.yaml'
- !include 'Bag All Player Cards 15bb07/Card British Bull Dog (2) 7b7050.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz (0) 897a94.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz 897a94.yaml'
- !include 'Bag All Player Cards 15bb07/Card Dirty Deeds (3) aa2d6a.yaml'
- !include 'Bag All Player Cards 15bb07/Card Esoteric Method (1) 9250e1.yaml'
- !include 'Bag All Player Cards 15bb07/Card Katana (0) f5beb5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Katana f5beb5.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ethereal Weaving (3) 697efd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Putrescent Rot 2d1e60.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ravenous Myconid (4) df93ca.yaml'
- !include 'Bag All Player Cards 15bb07/Card Second Wind (2) c3c979.yaml'
- !include 'Bag All Player Cards 15bb07/Card Fire Axe (2) 326ec3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Stir the Pot (0) c25479.yaml'
- !include 'Bag All Player Cards 15bb07/Card Stir the Pot c25479.yaml'
- !include 'Bag All Player Cards 15bb07/Card Keeper of the Key 014086.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bide Your Time (0) 24d3b3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Thorough Inquiry (0) c6b644.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bide Your Time 24d3b3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Thorough Inquiry c6b644.yaml'
- !include 'Bag All Player Cards 15bb07/Card Steady-Handed (1) 9181f7.yaml'
- !include 'Bag All Player Cards 15bb07/Card Dawn Star (1) 8b15d7.yaml'
- !include 'Bag All Player Cards 15bb07/Card Seal of the Elders (5) d2b649.yaml'
- !include 'Bag All Player Cards 15bb07/Card Keep Faith (2) 73e4ee.yaml'
- !include 'Bag All Player Cards 15bb07/Card Mariner''s Compass (2) 596053.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bank Job (0) c4dfa2.yaml'
- !include 'Bag All Player Cards 15bb07/Card Bank Job c4dfa2.yaml'
- !include 'Bag All Player Cards 15bb07/Card Abyssal Rot bbeac6.yaml'
- !include 'Bag All Player Cards 15bb07/Card Maimed Hand cb14d3.yaml'
- !include 'Bag All Player Cards 15bb07/Card Testing Sprint (0) a4846b.yaml'
- !include 'Bag All Player Cards 15bb07/Card Testing Sprint a4846b.yaml'
- !include 'Bag All Player Cards 15bb07/Card Blade of Yoth c61a83.yaml'
- !include 'Bag All Player Cards 15bb07/Card Call the Beyond (2) 0dd070.yaml'
- !include 'Bag All Player Cards 15bb07/Card Gabriel Carillo (1) 7e1088.yaml'
- !include 'Bag All Player Cards 15bb07/Card Diabolical Luck (0) 1fea59.yaml'
- !include 'Bag All Player Cards 15bb07/Card Cleaning Kit (0) d07668.yaml'
- !include 'Bag All Player Cards 15bb07/Card Diabolical Luck 1fea59.yaml'
- !include 'Bag All Player Cards 15bb07/Card Cleaning Kit d07668.yaml'
- !include 'Bag All Player Cards 15bb07/Card Evanescent Ascension 9e763b.yaml'
- !include 'Bag All Player Cards 15bb07/Card Matchbox (0) b533db.yaml'
- !include 'Bag All Player Cards 15bb07/Card British Bull Dog (0) 9b76a0.yaml'
- !include 'Bag All Player Cards 15bb07/Card Matchbox b533db.yaml'
- !include 'Bag All Player Cards 15bb07/Card British Bull Dog 9b76a0.yaml'
- !include 'Bag All Player Cards 15bb07/Card Twilight Diadem a2f8f8.yaml'
- !include 'Bag All Player Cards 15bb07/Card Rod of Carnamagos (0) 66ec64.yaml'
- !include 'Bag All Player Cards 15bb07/Card Rod of Carnamagos 66ec64.yaml'
- !include 'Bag All Player Cards 15bb07/Card Spectral Razor (2) b38ded.yaml'
- !include 'Bag All Player Cards 15bb07/Card Ethereal Form (2) e58c7b.yaml'
- !include 'Bag All Player Cards 15bb07/Card Cleaning Kit (3) 94c3e1.yaml'
@ -1696,7 +1701,7 @@ ContainedObjects:
- !include 'Bag All Player Cards 15bb07/Card Fake Credentials (4) 7ebb67.yaml'
- !include 'Bag All Player Cards 15bb07/Card Hunting Jacket (2) 5355fa.yaml'
- !include 'Bag All Player Cards 15bb07/Card Dark Horse (5) d00e4d.yaml'
- !include 'Bag All Player Cards 15bb07/Card Antediluvian Hymn (0) ba4746.yaml'
- !include 'Bag All Player Cards 15bb07/Card Antediluvian Hymn ba4746.yaml'
- !include 'Bag All Player Cards 15bb07/Card Aember Rot 3e6219.yaml'
- !include 'Bag All Player Cards 15bb07/Card The Silver Moth 2c6dc1.yaml'
- !include 'Bag All Player Cards 15bb07/Card Scarlet Rot fe476c.yaml'
@ -1711,7 +1716,7 @@ ContainedObjects:
- !include 'Bag All Player Cards 15bb07/Card Bianca Die Katz 992ccd.yaml'
- !include 'Bag All Player Cards 15bb07/Card Servant of Brass 06bc7e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Read the Signs (2) 5ce4d4.yaml'
- !include 'Bag All Player Cards 15bb07/Card Elaborate Distraction (0) d1422e.yaml'
- !include 'Bag All Player Cards 15bb07/Card Elaborate Distraction d1422e.yaml'
Description: ''
DragSelectable: true
GMNotes: ''

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 125300
CardID: 917316
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'1253':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2278324186529136565/AE4B753BBB284EB12A0BDE36CEA3CD763C835AC0/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Absolution
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94732
CardID: 917408
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 20100
CardID: 917417
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'201':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009070977509/27A8CCF2BC48CAD909180D64177E86B8232F66C6/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Accursed
SidewaysCard: false
Snap: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 9100
CardID: 917300
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'91':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2223150865961116295/72473371D0DB68709B4B1B9343A748510A1BB30A/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Ad Hoc
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94733
CardID: 917409
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 1700
CardID: 917303
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'17':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2279448008875866961/175F57B97C6DEC14F1F6E6420A318A76D38FFE8A/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Aetheric Current (Yoth)
SidewaysCard: false
Snap: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 12700
CardID: 917302
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'127':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2279448008875867121/DD34A54C059F9DE340A3C54406A276D202D1C329/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Aetheric Current (Yuggoth)
SidewaysCard: false
Snap: true

View File

@ -3,20 +3,20 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 1100
CardID: 117303
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'11':
'1173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2172484009071330094/3AEFB558D789BC525F50DCC0217FA17627EB91BF/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009071330266/6DD06B74E6DD4F473AB47C39DD17DF9FAD8B1455/
NumHeight: 1
NumWidth: 1
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430631817/A15FFE0907238AB578CFEB119974545A4408E3A1/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430631996/4C0628EA8BAEB615CBF9575C1B2F0389EED9C4B7/
NumHeight: 2
NumWidth: 4
Type: 0
UniqueBack: false
UniqueBack: true
Description: The Countess
DragSelectable: true
GMNotes: "{\n \"id\": \"10009\",\n \"type\": \"Investigator\",\n \"class\": \"Rogue\",\n
@ -39,7 +39,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Alessandra Zorzi
SidewaysCard: true
Snap: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 4900
CardID: 917311
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'49':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2279447674651244606/B2275AD213AF8DD0B65170BD4E5E5E98E233A6C7/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -34,7 +34,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Ancestral Token
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94737
CardID: 917415
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
@ -35,7 +35,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Antediluvian Hymn (0)
Nickname: Antediluvian Hymn
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378962
CardID: 378953
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378917
CardID: 378959
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94760
CardID: 917458
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94723
CardID: 917361
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
@ -35,7 +35,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Bank Job (0)
Nickname: Bank Job
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 200
CardID: 917305
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'2':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009071331078/3553DC91D67F802BAFFE9F674DBE991C2D439867/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Beguile
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94728
CardID: 917401
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,21 +3,21 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94720
CardID: 917354
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: Singing Your Songs
Description: Singing Your Song
DragSelectable: true
GMNotes: "{\n \"id\": \"10062\",\n \"type\": \"Asset\",\n \"slot\": \"Ally\",\n
\ \"class\": \"Rogue\",\n \"cost\": 2,\n \"level\": 0,\n \"traits\": \"Ally.
@ -37,7 +37,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Bianca "Die Katz" (0)
Nickname: Bianca "Die Katz"
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -3,21 +3,21 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94721
CardID: 917355
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
Description: Enemy
DragSelectable: true
GMNotes: "{\n \"id\": \"10063\",\n \"type\": \"Enemy\",\n \"traits\": \"Humanoid.
Criminal. Socialite.\",\n \"victory\": 0,\n \"cycle\": \"The Feast of Hemlock

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94755
CardID: 917451
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
@ -34,7 +34,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Bide Your Time (0)
Nickname: Bide Your Time
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 9400
CardID: 917356
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'94':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2195002645128569861/7143A7BF20E37A069E170A21D77C16C91D81374D/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Blackmail File
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94707
CardID: 917328
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94705
CardID: 917326
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378947
CardID: 378938
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378949
CardID: 378940
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3795':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -41,6 +41,9 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (
return require, loaded, register, modules
end)(nil)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/cards/BookofLivingMyths")
end)
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
@ -172,6 +175,116 @@ do
return GUIDReferenceApi
end
end)
__bundle_register("playercards/cards/BookofLivingMyths", function(require, _LOADED, __bundle_register, __bundle_modules)
local chaosBagApi = require("chaosbag/ChaosBagApi")
local guidReferenceApi = require("core/GUIDReferenceApi")
local playmatApi = require("playermat/PlaymatApi")
function onLoad(savedData)
self.addContextMenuItem("Enable Helper", createButtons)
if savedData ~= "" then
local loadedData = JSON.decode(savedData)
if loadedData.loopId then
createButtons()
end
end
end
function deleteButtons()
self.clearContextMenu()
self.addContextMenuItem("Enable Helper", createButtons)
self.UI.setAttribute("inactives", "active", false)
self.UI.setAttribute("actives", "active", false)
if loopId then Wait.stop(loopId) end
loopId = nil
self.script_state = JSON.encode({ loopId = loopId })
end
-- create buttons and begin monitoring chaos bag for curse and bless tokens
function createButtons()
self.clearContextMenu()
self.addContextMenuItem("Clear Helper", deleteButtons)
self.UI.setAttribute("inactives", "active", true)
self.UI.setAttribute("actives", "active", true)
loopId = Wait.time(maybeUpdateButtonState, 1, -1)
self.script_state = JSON.encode({ loopId = loopId })
end
function resolveToken(player, _, tokenType)
local matColor
if player.color == "Black" then
matColor = playmatApi.getMatColorByPosition(self.getPosition())
else
matColor = playmatApi.getMatColor(player.color)
end
local mat = guidReferenceApi.getObjectByOwnerAndType(matColor, "Playermat")
chaosBagApi.drawChaosToken(mat, true, tokenType)
end
-- count tokens in the bag and show appropriate buttons
function maybeUpdateButtonState()
local numInBag = getBlessCurseInBag()
local state = { Bless = false, Curse = false }
if numInBag.Bless >= numInBag.Curse and numInBag.Bless > 0 then
state.Bless = true
end
if numInBag.Curse >= numInBag.Bless and numInBag.Curse > 0 then
state.Curse = true
end
setUiState(state)
end
function getBlessCurseInBag()
local numInBag = { Bless = 0, Curse = 0 }
local chaosBag = chaosBagApi.findChaosBag()
for _, v in ipairs(chaosBag.getObjects()) do
if v.name == "Bless" then
numInBag.Bless = numInBag.Bless + 1
elseif v.name == "Curse" then
numInBag.Curse = numInBag.Curse + 1
end
end
return numInBag
end
function setUiState(params)
-- set bless state
if params.Bless then
self.UI.show("Bless")
self.UI.hide("inactiveBless")
else
self.UI.show("inactiveBless")
self.UI.hide("Bless")
end
-- set curse state
if params.Curse then
self.UI.show("Curse")
self.UI.hide("inactiveCurse")
else
self.UI.show("inactiveCurse")
self.UI.hide("Curse")
end
end
function errorMessage()
local numInBag = getBlessCurseInBag()
if numInBag.Bless == 0 and numInBag.Curse == 0 then
broadcastToAll("There are no Bless or Curse tokens in the chaos bag.", "Red")
elseif numInBag.Bless > numInBag.Curse then
broadcastToAll("There are more Bless tokens than Curse tokens in the chaos bag.", "Red")
else
broadcastToAll("There are more Curse tokens than Bless tokens in the chaos bag.", "Red")
end
end
end)
__bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local PlaymatApi = {}
@ -520,113 +633,4 @@ do
return SearchLib
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/cards/BookofLivingMyths")
end)
__bundle_register("playercards/cards/BookofLivingMyths", function(require, _LOADED, __bundle_register, __bundle_modules)
local chaosBagApi = require("chaosbag/ChaosBagApi")
local guidReferenceApi = require("core/GUIDReferenceApi")
local playmatApi = require("playermat/PlaymatApi")
function onSave()
return JSON.encode({ loopId = loopId })
end
function onLoad(savedData)
self.addContextMenuItem("Enable Helper", createButtons)
if savedData ~= "" then
local loadedData = JSON.decode(savedData)
if loadedData.loopId then
createButtons()
end
end
end
function deleteButtons()
self.UI.setAttribute("inactives", "active", false)
self.UI.setAttribute("actives", "active", false)
self.clearContextMenu()
self.addContextMenuItem("Enable Helper", createButtons)
Wait.stop(loopId)
loopId = nil
end
-- Create buttons and begin monitoring chaos bag for curse and bless tokens
function createButtons()
self.clearContextMenu()
self.addContextMenuItem("Clear Helper", deleteButtons)
self.UI.setAttribute("inactives", "active", true)
self.UI.setAttribute("actives", "active", true)
self.UI.show("inactiveBless")
self.UI.show("inactiveCurse")
self.UI.hide("Bless")
self.UI.hide("Curse")
currentState = "Empty"
loopId = Wait.time(countBlessCurse, 1, -1)
end
function resolveToken(_, _, tokenType)
local closestMatColor = playmatApi.getMatColorByPosition(self.getPosition())
local mat = guidReferenceApi.getObjectByOwnerAndType(closestMatColor, "Playermat")
chaosBagApi.drawChaosToken(mat, true, tokenType)
end
-- count tokens in the bag and show appropriate buttons
function countBlessCurse()
local numInBag = { Bless = 0, Curse = 0 }
local chaosBag = chaosBagApi.findChaosBag()
local tokens = {}
for _, v in ipairs(chaosBag.getObjects()) do
if v.name == "Bless" then
numInBag.Bless = numInBag.Bless + 1
elseif v.name == "Curse" then
numInBag.Curse = numInBag.Curse + 1
end
end
if numInBag.Bless > numInBag.Curse then
if currentState ~= "More Bless" then
self.UI.show("Bless")
self.UI.hide("inactiveBless")
self.UI.show("inactiveCurse")
self.UI.hide("Curse")
end
currentState = "More Bless"
elseif numInBag.Curse > numInBag.Bless then
if currentState ~= "More Curse" then
self.UI.show("Curse")
self.UI.hide("inactiveCurse")
self.UI.show("inactiveBless")
self.UI.hide("Bless")
end
currentState = "More Curse"
elseif numInBag.Curse == 0 then
if currentState ~= "Empty" then
self.UI.show("inactiveBless")
self.UI.hide("Bless")
self.UI.show("inactiveCurse")
self.UI.hide("Curse")
end
currentState = "Empty"
else
if currentState ~= "Equal" then
self.UI.show("Bless")
self.UI.hide("inactiveBless")
self.UI.show("Curse")
self.UI.hide("inactiveCurse")
end
currentState = "Equal"
end
end
function errorMessage ()
if currentState == "Empty" then
broadcastToAll("There are no Bless or Curse tokens in the chaos bag.","Red")
elseif currentState == "More Bless" then
broadcastToAll("There are more Bless tokens than Curse tokens in the chaos bag.","Red")
else
broadcastToAll("There are more Curse tokens than Bless tokens in the chaos bag.","Red")
end
end
end)
return __bundle_require("__root")

View File

@ -4,10 +4,20 @@
font="font_teutonic-arkham"
fontSize="300"
iconWidth="400"
iconAlignment="Right"/>
iconAlignment="Right"
text="Resolve"/>
<Button class="inactive"
onClick="errorMessage"
color="#353535E6"
textColor="#A0A0A0"/>
<Button class="active"
onClick="resolveToken"
textColor="white"
active="false"/>
<Panel position="0 -55 -22"
rotation="0 0 180"
height="900" width="1400"
height="900"
width="1400"
scale="0.1 0.1 1"/>
<TableLayout active="false"
cellSpacing="80"
@ -18,14 +28,18 @@
<TableLayout id="actives">
<Row>
<Cell>
<Button id="Bless" icon="bless" textColor="White"
onClick="resolveToken" color="#9D702CE6" iconAlignment="Right">Resolve</Button>
<Button id="Bless"
icon="bless"
color="#9D702CE6"
class="active"/>
</Cell>
</Row>
<Row>
<Cell>
<Button id="Curse" icon="curse" textColor="White"
onClick="resolveToken" color="#633A84E6">Resolve</Button>
<Button id="Curse"
icon="curse"
color="#633A84E6"
class="active"/>
</Cell>
</Row>
</TableLayout>
@ -35,14 +49,16 @@
<TableLayout id="inactives">
<Row>
<Cell>
<Button id="inactiveBless" icon="bless" textColor="#A0A0A0"
onClick="errorMessage" color="#353535E6">Resolve</Button>
<Button id="inactiveBless"
icon="bless"
class="inactive"/>
</Cell>
</Row>
<Row>
<Cell>
<Button id="inactiveCurse" icon="curse" textColor="#A0A0A0"
onClick="errorMessage" color="#353535E6">Resolve</Button>
<Button id="inactiveCurse"
icon="curse"
class="inactive"/>
</Cell>
</Row>
</TableLayout>

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 8500
CardID: 917307
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'85':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2279447041528306779/F60D99AAA35122A9553F0B5FD736DB6FB73BE7EF/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
CustomUIAssets:
@ -41,10 +41,10 @@ HideWhenFaceDown: true
IgnoreFoW: false
LayoutGroupSortIndex: 0
Locked: false
LuaScript: !include 'CardCustom Book of Living Myths c5fb1f.ttslua'
LuaScript: !include 'Card Book of Living Myths c5fb1f.ttslua'
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Book of Living Myths
SidewaysCard: false
Snap: true
@ -64,4 +64,4 @@ Transform:
scaleY: 1
scaleZ: 1
Value: 0
XmlUI: !include 'CardCustom Book of Living Myths c5fb1f.xml'
XmlUI: !include 'Card Book of Living Myths c5fb1f.xml'

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378928
CardID: 378919
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378930
CardID: 378921
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94727
CardID: 917369
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94722
CardID: 917357
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
@ -36,7 +36,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: British Bull Dog (0)
Nickname: British Bull Dog
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94757
CardID: 917455
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378960
CardID: 378951
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 379007
CardID: 379006
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 379006
CardID: 379005
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378916
CardID: 378958
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94740
CardID: 917421
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 40300
CardID: 917406
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'403':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2278324186559601365/6C247C82793481C97E24F74A26AF905E3B708C50/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: The Capricious Meddler
@ -35,7 +35,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Cat Mask
SidewaysCard: false
Snap: true

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 12102
CardID: 917332
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'121':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2021607169641060708/B263E98D28E301D8EF45EB001FEBCE98DA25354B/
NumHeight: 2
NumWidth: 6
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94704
CardID: 917325
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94700
CardID: 917312
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
@ -36,7 +36,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Cleaning Kit (0)
Nickname: Cleaning Kit
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 124100
CardID: 917349
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'1241':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2278324186529136671/AC1530FE71D9E5CF4F816A488E07076AC8064BD8/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Confound (3)
SidewaysCard: false
Snap: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 34200
CardID: 917338
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'342':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009070977979/A629DD5733453F892F57514EC5950E087486896F/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -34,7 +34,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Control Variable
SidewaysCard: false
Snap: true

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378961
CardID: 378952
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -78,84 +78,196 @@ do
return TokenArrangerApi
end
end)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
return SearchLib
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
end)
__bundle_register("playercards/cards/CrystallineElderSign3", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["+1"] = true,
["Elder Sign"] = true
}
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
require("playercards/CardsThatSealTokens")
-- respawns the chaos bag with a new state of tokens
---@param tokenList table List of chaos token ids
ChaosBagApi.setChaosBagState = function(tokenList)
return Global.call("setChaosBagState", tokenList)
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getChaosBagState = function()
local chaosBagContentsCatcher = Global.call("getChaosBagState")
local chaosBagContents = {}
for _, v in ipairs(chaosBagContentsCatcher) do
table.insert(chaosBagContents, v)
end
return chaosBagContents
end
-- checks scripting zone for chaos bag (also called by a lot of objects!)
ChaosBagApi.findChaosBag = function()
return Global.call("findChaosBag")
end
-- returns a table of object references to the tokens in play (does not include sealed tokens!)
ChaosBagApi.getTokensInPlay = function()
return Global.call("getChaosTokensinPlay")
end
-- returns all sealed tokens on cards to the chaos bag
---@param playerColor string Color of the player to show the broadcast to
ChaosBagApi.releaseAllSealedTokens = function(playerColor)
return Global.call("releaseAllSealedTokens", playerColor)
end
-- returns all drawn tokens to the chaos bag
ChaosBagApi.returnChaosTokens = function()
return Global.call("returnChaosTokens")
end
-- removes the specified chaos token from the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.removeChaosToken = function(id)
return Global.call("removeChaosToken", id)
end
-- returns a chaos token to the bag and calls all relevant functions
---@param token tts__Object Chaos token to return
ChaosBagApi.returnChaosTokenToBag = function(token)
return Global.call("returnChaosTokenToBag", token)
end
-- spawns the specified chaos token and puts it into the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.spawnChaosToken = function(id)
return Global.call("spawnChaosToken", id)
end
-- Checks to see if the chaos bag can be manipulated. If a player is searching the bag when tokens
-- are drawn or replaced a TTS bug can cause those tokens to vanish. Any functions which change the
-- contents of the bag should check this method before doing so.
-- This method will broadcast a message to all players if the bag is being searched.
---@return any canTouch True if the bag is manipulated, false if it should be blocked.
ChaosBagApi.canTouchChaosTokens = function()
return Global.call("canTouchChaosTokens")
end
-- called by playermats (by the "Draw chaos token" button)
---@param mat tts__Object Playermat that triggered this
---@param drawAdditional boolean Controls whether additional tokens should be drawn
---@param tokenType? string Name of token (e.g. "Bless") to be drawn from the bag
---@param guidToBeResolved? string GUID of the sealed token to be resolved instead of drawing a token from the bag
ChaosBagApi.drawChaosToken = function(mat, drawAdditional, tokenType, guidToBeResolved)
return Global.call("drawChaosToken", {mat = mat, drawAdditional = drawAdditional, tokenType = tokenType, guidToBeResolved = guidToBeResolved})
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getIdUrlMap = function()
return Global.getTable("ID_URL_MAP")
end
return ChaosBagApi
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
end)
__bundle_register("playercards/CardsThatSealTokens", function(require, _LOADED, __bundle_register, __bundle_modules)
--[[ Library for cards that seal tokens
@ -446,196 +558,13 @@ function resolveSealed()
chaosBagApi.drawChaosToken(mat, true, _, guidToBeResolved)
end
end)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
__bundle_register("playercards/cards/CrystallineElderSign3", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["+1"] = true,
["Elder Sign"] = true
}
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
end)
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
-- respawns the chaos bag with a new state of tokens
---@param tokenList table List of chaos token ids
ChaosBagApi.setChaosBagState = function(tokenList)
return Global.call("setChaosBagState", tokenList)
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getChaosBagState = function()
local chaosBagContentsCatcher = Global.call("getChaosBagState")
local chaosBagContents = {}
for _, v in ipairs(chaosBagContentsCatcher) do
table.insert(chaosBagContents, v)
end
return chaosBagContents
end
-- checks scripting zone for chaos bag (also called by a lot of objects!)
ChaosBagApi.findChaosBag = function()
return Global.call("findChaosBag")
end
-- returns a table of object references to the tokens in play (does not include sealed tokens!)
ChaosBagApi.getTokensInPlay = function()
return Global.call("getChaosTokensinPlay")
end
-- returns all sealed tokens on cards to the chaos bag
---@param playerColor string Color of the player to show the broadcast to
ChaosBagApi.releaseAllSealedTokens = function(playerColor)
return Global.call("releaseAllSealedTokens", playerColor)
end
-- returns all drawn tokens to the chaos bag
ChaosBagApi.returnChaosTokens = function()
return Global.call("returnChaosTokens")
end
-- removes the specified chaos token from the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.removeChaosToken = function(id)
return Global.call("removeChaosToken", id)
end
-- returns a chaos token to the bag and calls all relevant functions
---@param token tts__Object Chaos token to return
ChaosBagApi.returnChaosTokenToBag = function(token)
return Global.call("returnChaosTokenToBag", token)
end
-- spawns the specified chaos token and puts it into the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.spawnChaosToken = function(id)
return Global.call("spawnChaosToken", id)
end
-- Checks to see if the chaos bag can be manipulated. If a player is searching the bag when tokens
-- are drawn or replaced a TTS bug can cause those tokens to vanish. Any functions which change the
-- contents of the bag should check this method before doing so.
-- This method will broadcast a message to all players if the bag is being searched.
---@return any canTouch True if the bag is manipulated, false if it should be blocked.
ChaosBagApi.canTouchChaosTokens = function()
return Global.call("canTouchChaosTokens")
end
-- called by playermats (by the "Draw chaos token" button)
---@param mat tts__Object Playermat that triggered this
---@param drawAdditional boolean Controls whether additional tokens should be drawn
---@param tokenType? string Name of token (e.g. "Bless") to be drawn from the bag
---@param guidToBeResolved? string GUID of the sealed token to be resolved instead of drawing a token from the bag
ChaosBagApi.drawChaosToken = function(mat, drawAdditional, tokenType, guidToBeResolved)
return Global.call("drawChaosToken", {mat = mat, drawAdditional = drawAdditional, tokenType = tokenType, guidToBeResolved = guidToBeResolved})
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getIdUrlMap = function()
return Global.getTable("ID_URL_MAP")
end
return ChaosBagApi
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
require("playercards/CardsThatSealTokens")
end)
__bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
@ -914,4 +843,75 @@ do
return PlaymatApi
end
end)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
end
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
end
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
end
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
end
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
end
return SearchLib
end
end)
return __bundle_require("__root")

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378931
CardID: 378922
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -19,9 +19,9 @@ CustomDeck:
UniqueBack: false
Description: Basic Weakness
DragSelectable: true
GMNotes: "{\n \"id\": \"54014\",\n \"type\": \"Treachery\",\n \"class\": \"Neutral\",\n
\ \"traits\": \"Curse. Omen.\",\n \"permanent\": true,\n \"weakness\": true,\n
\ \"basicWeaknessCount\": 1,\n \"cycle\": \"Return to the Circle Undone\"\n}"
GMNotes: "{\r\n \"id\": \"54014\",\r\n \"type\": \"Treachery\",\r\n \"class\":
\"Neutral\",\r\n \"traits\": \"Curse. Omen.\",\r\n \"permanent\": true,\r\n \"weakness\":
true,\r\n \"basicWeaknessCount\": 1,\r\n \"cycle\": \"Return to the Circle Undone\"\r\n}\r"
GUID: bad8cb
Grid: true
GridProjection: false

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3795':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94754
CardID: 917449
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
@ -20,8 +20,8 @@ CustomDeck:
Description: ''
DragSelectable: true
GMNotes: "{\n \"id\": \"10127\",\n \"type\": \"Asset\",\n \"class\": \"Survivor\",\n
\ \"level\": 5,\n \"traits\": \"Condition.\",\n \"permanent\": true,\n \"cycle\":
\"The Feast of Hemlock Vale\"\n}"
\ \"startsInPlay\": true,\n \"level\": 5,\n \"traits\": \"Condition.\",\n \"permanent\":
true,\n \"cycle\": \"The Feast of Hemlock Vale\"\n}"
GUID: d00e4d
Grid: true
GridProjection: false

View File

@ -41,80 +41,234 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (
return require, loaded, register, modules
end)(nil)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
end
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
end
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
end
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
end
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
end
return SearchLib
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/cards/DarkRitual")
end)
__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local TokenArrangerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
-- local function to call the token arranger, if it is on the table
---@param functionName string Name of the function to cal
---@param argument? table Parameter to pass
local function callIfExistent(functionName, argument)
local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger")
if tokenArranger ~= nil then
tokenArranger.call(functionName, argument)
end
end
-- updates the token modifiers with the provided data
---@param fullData table Contains the chaos token metadata
TokenArrangerApi.onTokenDataChanged = function(fullData)
callIfExistent("onTokenDataChanged", fullData)
end
-- deletes already laid out tokens
TokenArrangerApi.deleteCopiedTokens = function()
callIfExistent("deleteCopiedTokens")
end
-- updates the laid out tokens
TokenArrangerApi.layout = function()
Wait.time(function() callIfExistent("layout") end, 0.1)
end
return TokenArrangerApi
end
end)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
end)
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
-- respawns the chaos bag with a new state of tokens
---@param tokenList table List of chaos token ids
ChaosBagApi.setChaosBagState = function(tokenList)
return Global.call("setChaosBagState", tokenList)
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getChaosBagState = function()
local chaosBagContentsCatcher = Global.call("getChaosBagState")
local chaosBagContents = {}
for _, v in ipairs(chaosBagContentsCatcher) do
table.insert(chaosBagContents, v)
end
return chaosBagContents
end
-- checks scripting zone for chaos bag (also called by a lot of objects!)
ChaosBagApi.findChaosBag = function()
return Global.call("findChaosBag")
end
-- returns a table of object references to the tokens in play (does not include sealed tokens!)
ChaosBagApi.getTokensInPlay = function()
return Global.call("getChaosTokensinPlay")
end
-- returns all sealed tokens on cards to the chaos bag
---@param playerColor string Color of the player to show the broadcast to
ChaosBagApi.releaseAllSealedTokens = function(playerColor)
return Global.call("releaseAllSealedTokens", playerColor)
end
-- returns all drawn tokens to the chaos bag
ChaosBagApi.returnChaosTokens = function()
return Global.call("returnChaosTokens")
end
-- removes the specified chaos token from the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.removeChaosToken = function(id)
return Global.call("removeChaosToken", id)
end
-- returns a chaos token to the bag and calls all relevant functions
---@param token tts__Object Chaos token to return
ChaosBagApi.returnChaosTokenToBag = function(token)
return Global.call("returnChaosTokenToBag", token)
end
-- spawns the specified chaos token and puts it into the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.spawnChaosToken = function(id)
return Global.call("spawnChaosToken", id)
end
-- Checks to see if the chaos bag can be manipulated. If a player is searching the bag when tokens
-- are drawn or replaced a TTS bug can cause those tokens to vanish. Any functions which change the
-- contents of the bag should check this method before doing so.
-- This method will broadcast a message to all players if the bag is being searched.
---@return any canTouch True if the bag is manipulated, false if it should be blocked.
ChaosBagApi.canTouchChaosTokens = function()
return Global.call("canTouchChaosTokens")
end
-- called by playermats (by the "Draw chaos token" button)
---@param mat tts__Object Playermat that triggered this
---@param drawAdditional boolean Controls whether additional tokens should be drawn
---@param tokenType? string Name of token (e.g. "Bless") to be drawn from the bag
---@param guidToBeResolved? string GUID of the sealed token to be resolved instead of drawing a token from the bag
ChaosBagApi.drawChaosToken = function(mat, drawAdditional, tokenType, guidToBeResolved)
return Global.call("drawChaosToken", {mat = mat, drawAdditional = drawAdditional, tokenType = tokenType, guidToBeResolved = guidToBeResolved})
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getIdUrlMap = function()
return Global.getTable("ID_URL_MAP")
end
return ChaosBagApi
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
end)
__bundle_register("playercards/CardsThatSealTokens", function(require, _LOADED, __bundle_register, __bundle_modules)
--[[ Library for cards that seal tokens
This file is used to add sealing option to cards' context menu.
@ -404,83 +558,14 @@ function resolveSealed()
chaosBagApi.drawChaosToken(mat, true, _, guidToBeResolved)
end
end)
__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local TokenArrangerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
__bundle_register("playercards/cards/DarkRitual", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["Curse"] = true
}
-- local function to call the token arranger, if it is on the table
---@param functionName string Name of the function to cal
---@param argument? table Parameter to pass
local function callIfExistent(functionName, argument)
local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger")
if tokenArranger ~= nil then
tokenArranger.call(functionName, argument)
end
end
KEEP_OPEN = true
-- updates the token modifiers with the provided data
---@param fullData table Contains the chaos token metadata
TokenArrangerApi.onTokenDataChanged = function(fullData)
callIfExistent("onTokenDataChanged", fullData)
end
-- deletes already laid out tokens
TokenArrangerApi.deleteCopiedTokens = function()
callIfExistent("deleteCopiedTokens")
end
-- updates the laid out tokens
TokenArrangerApi.layout = function()
Wait.time(function() callIfExistent("layout") end, 0.1)
end
return TokenArrangerApi
end
end)
__bundle_register("core/GUIDReferenceApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local GUIDReferenceApi = {}
local function getGuidHandler()
return getObjectFromGUID("123456")
end
---@param owner string Parent object for this search
---@param type string Type of object to search for
---@return any: Object reference to the matching object
GUIDReferenceApi.getObjectByOwnerAndType = function(owner, type)
return getGuidHandler().call("getObjectByOwnerAndType", { owner = owner, type = type })
end
-- returns all matching objects as a table with references
---@param type string Type of object to search for
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByType = function(type)
return getGuidHandler().call("getObjectsByType", type)
end
-- returns all matching objects as a table with references
---@param owner string Parent object for this search
---@return table: List of object references to matching objects
GUIDReferenceApi.getObjectsByOwner = function(owner)
return getGuidHandler().call("getObjectsByOwner", owner)
end
-- sends new information to the reference handler to edit the main index
---@param owner string Parent of the object
---@param type string Type of the object
---@param guid string GUID of the object
GUIDReferenceApi.editIndex = function(owner, type, guid)
return getGuidHandler().call("editIndex", {
owner = owner,
type = type,
guid = guid
})
end
return GUIDReferenceApi
end
require("playercards/CardsThatSealTokens")
end)
__bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
@ -759,160 +844,75 @@ do
return PlaymatApi
end
end)
__bundle_register("playercards/cards/DarkRitual", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["Curse"] = true
}
KEEP_OPEN = true
require("playercards/CardsThatSealTokens")
end)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
end)
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
-- respawns the chaos bag with a new state of tokens
---@param tokenList table List of chaos token ids
ChaosBagApi.setChaosBagState = function(tokenList)
return Global.call("setChaosBagState", tokenList)
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getChaosBagState = function()
local chaosBagContentsCatcher = Global.call("getChaosBagState")
local chaosBagContents = {}
for _, v in ipairs(chaosBagContentsCatcher) do
table.insert(chaosBagContents, v)
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
return chaosBagContents
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
end
-- checks scripting zone for chaos bag (also called by a lot of objects!)
ChaosBagApi.findChaosBag = function()
return Global.call("findChaosBag")
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
end
-- returns a table of object references to the tokens in play (does not include sealed tokens!)
ChaosBagApi.getTokensInPlay = function()
return Global.call("getChaosTokensinPlay")
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
end
-- returns all sealed tokens on cards to the chaos bag
---@param playerColor string Color of the player to show the broadcast to
ChaosBagApi.releaseAllSealedTokens = function(playerColor)
return Global.call("releaseAllSealedTokens", playerColor)
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
end
-- returns all drawn tokens to the chaos bag
ChaosBagApi.returnChaosTokens = function()
return Global.call("returnChaosTokens")
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
end
-- removes the specified chaos token from the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.removeChaosToken = function(id)
return Global.call("removeChaosToken", id)
end
-- returns a chaos token to the bag and calls all relevant functions
---@param token tts__Object Chaos token to return
ChaosBagApi.returnChaosTokenToBag = function(token)
return Global.call("returnChaosTokenToBag", token)
end
-- spawns the specified chaos token and puts it into the chaos bag
---@param id string ID of the chaos token
ChaosBagApi.spawnChaosToken = function(id)
return Global.call("spawnChaosToken", id)
end
-- Checks to see if the chaos bag can be manipulated. If a player is searching the bag when tokens
-- are drawn or replaced a TTS bug can cause those tokens to vanish. Any functions which change the
-- contents of the bag should check this method before doing so.
-- This method will broadcast a message to all players if the bag is being searched.
---@return any canTouch True if the bag is manipulated, false if it should be blocked.
ChaosBagApi.canTouchChaosTokens = function()
return Global.call("canTouchChaosTokens")
end
-- called by playermats (by the "Draw chaos token" button)
---@param mat tts__Object Playermat that triggered this
---@param drawAdditional boolean Controls whether additional tokens should be drawn
---@param tokenType? string Name of token (e.g. "Bless") to be drawn from the bag
---@param guidToBeResolved? string GUID of the sealed token to be resolved instead of drawing a token from the bag
ChaosBagApi.drawChaosToken = function(mat, drawAdditional, tokenType, guidToBeResolved)
return Global.call("drawChaosToken", {mat = mat, drawAdditional = drawAdditional, tokenType = tokenType, guidToBeResolved = guidToBeResolved})
end
-- returns a Table List of chaos token ids in the current chaos bag
-- requires copying the data into a new table because TTS is weird about handling table return values in Global
ChaosBagApi.getIdUrlMap = function()
return Global.getTable("ID_URL_MAP")
end
return ChaosBagApi
return SearchLib
end
end)
return __bundle_require("__root")

View File

@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94756
CardID: 917453
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -41,6 +41,103 @@ local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (
return require, loaded, register, modules
end)(nil)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/cards/DayofReckoning")
end)
__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local TokenArrangerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
-- local function to call the token arranger, if it is on the table
---@param functionName string Name of the function to cal
---@param argument? table Parameter to pass
local function callIfExistent(functionName, argument)
local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger")
if tokenArranger ~= nil then
tokenArranger.call(functionName, argument)
end
end
-- updates the token modifiers with the provided data
---@param fullData table Contains the chaos token metadata
TokenArrangerApi.onTokenDataChanged = function(fullData)
callIfExistent("onTokenDataChanged", fullData)
end
-- deletes already laid out tokens
TokenArrangerApi.deleteCopiedTokens = function()
callIfExistent("deleteCopiedTokens")
end
-- updates the laid out tokens
TokenArrangerApi.layout = function()
Wait.time(function() callIfExistent("layout") end, 0.1)
end
return TokenArrangerApi
end
end)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
end)
__bundle_register("chaosbag/ChaosBagApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local ChaosBagApi = {}
@ -172,87 +269,6 @@ do
return GUIDReferenceApi
end
end)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
end
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
end
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
end
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
end
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
end
return SearchLib
end
end)
__bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("playercards/cards/DayofReckoning")
end)
__bundle_register("playercards/cards/DayofReckoning", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["Elder Sign"] = true
}
require("playercards/CardsThatSealTokens")
end)
__bundle_register("playercards/CardsThatSealTokens", function(require, _LOADED, __bundle_register, __bundle_modules)
--[[ Library for cards that seal tokens
This file is used to add sealing option to cards' context menu.
@ -542,99 +558,12 @@ function resolveSealed()
chaosBagApi.drawChaosToken(mat, true, _, guidToBeResolved)
end
end)
__bundle_register("accessories/TokenArrangerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local TokenArrangerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
__bundle_register("playercards/cards/DayofReckoning", function(require, _LOADED, __bundle_register, __bundle_modules)
VALID_TOKENS = {
["Elder Sign"] = true
}
-- local function to call the token arranger, if it is on the table
---@param functionName string Name of the function to cal
---@param argument? table Parameter to pass
local function callIfExistent(functionName, argument)
local tokenArranger = guidReferenceApi.getObjectByOwnerAndType("Mythos", "TokenArranger")
if tokenArranger ~= nil then
tokenArranger.call(functionName, argument)
end
end
-- updates the token modifiers with the provided data
---@param fullData table Contains the chaos token metadata
TokenArrangerApi.onTokenDataChanged = function(fullData)
callIfExistent("onTokenDataChanged", fullData)
end
-- deletes already laid out tokens
TokenArrangerApi.deleteCopiedTokens = function()
callIfExistent("deleteCopiedTokens")
end
-- updates the laid out tokens
TokenArrangerApi.layout = function()
Wait.time(function() callIfExistent("layout") end, 0.1)
end
return TokenArrangerApi
end
end)
__bundle_register("chaosbag/BlessCurseManagerApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local BlessCurseManagerApi = {}
local guidReferenceApi = require("core/GUIDReferenceApi")
local function getManager()
return guidReferenceApi.getObjectByOwnerAndType("Mythos", "BlessCurseManager")
end
-- removes all taken tokens and resets the counts
BlessCurseManagerApi.removeTakenTokensAndReset = function()
local BlessCurseManager = getManager()
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Bless") end, 0.05)
Wait.time(function() BlessCurseManager.call("removeTakenTokens", "Curse") end, 0.10)
Wait.time(function() BlessCurseManager.call("doReset", "White") end, 0.15)
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.sealedToken = function(type, guid)
getManager().call("sealedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.releasedToken = function(type, guid)
getManager().call("releasedToken", { type = type, guid = guid })
end
-- updates the internal count (called by cards that seal bless/curse tokens)
---@param type string Type of chaos token ("Bless" or "Curse")
---@param guid string GUID of the token
BlessCurseManagerApi.returnedToken = function(type, guid)
getManager().call("returnedToken", { type = type, guid = guid })
end
-- broadcasts the current status for bless/curse tokens
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.broadcastStatus = function(playerColor)
getManager().call("broadcastStatus", playerColor)
end
-- removes all bless / curse tokens from the chaos bag and play
---@param playerColor string Color of the player to show the broadcast to
BlessCurseManagerApi.removeAll = function(playerColor)
getManager().call("doRemove", playerColor)
end
-- adds bless / curse sealing to the hovered card
---@param playerColor string Color of the player to show the broadcast to
---@param hoveredObject tts__Object Hovered object
BlessCurseManagerApi.addBlurseSealingMenu = function(playerColor, hoveredObject)
getManager().call("addMenuOptions", { playerColor = playerColor, hoveredObject = hoveredObject })
end
return BlessCurseManagerApi
end
require("playercards/CardsThatSealTokens")
end)
__bundle_register("playermat/PlaymatApi", function(require, _LOADED, __bundle_register, __bundle_modules)
do
@ -913,4 +842,75 @@ do
return PlaymatApi
end
end)
__bundle_register("util/SearchLib", function(require, _LOADED, __bundle_register, __bundle_modules)
do
local SearchLib = {}
local filterFunctions = {
isActionToken = function(x) return x.getDescription() == "Action Token" end,
isCard = function(x) return x.type == "Card" end,
isDeck = function(x) return x.type == "Deck" end,
isCardOrDeck = function(x) return x.type == "Card" or x.type == "Deck" end,
isClue = function(x) return x.memo == "clueDoom" and x.is_face_down == false end,
isTileOrToken = function(x) return x.type == "Tile" end
}
-- performs the actual search and returns a filtered list of object references
---@param pos tts__Vector Global position
---@param rot? tts__Vector Global rotation
---@param size table Size
---@param filter? string Name of the filter function
---@param direction? table Direction (positive is up)
---@param maxDistance? number Distance for the cast
local function returnSearchResult(pos, rot, size, filter, direction, maxDistance)
local filterFunc
if filter then
filterFunc = filterFunctions[filter]
end
local searchResult = Physics.cast({
origin = pos,
direction = direction or { 0, 1, 0 },
orientation = rot or { 0, 0, 0 },
type = 3,
size = size,
max_distance = maxDistance or 0
})
-- filtering the result
local objList = {}
for _, v in ipairs(searchResult) do
if not filter or filterFunc(v.hit_object) then
table.insert(objList, v.hit_object)
end
end
return objList
end
-- searches the specified area
SearchLib.inArea = function(pos, rot, size, filter)
return returnSearchResult(pos, rot, size, filter)
end
-- searches the area on an object
SearchLib.onObject = function(obj, filter)
pos = obj.getPosition()
size = obj.getBounds().size:setAt("y", 1)
return returnSearchResult(pos, _, size, filter)
end
-- searches the specified position (a single point)
SearchLib.atPosition = function(pos, filter)
size = { 0.1, 2, 0.1 }
return returnSearchResult(pos, _, size, filter)
end
-- searches below the specified position (downwards until y = 0)
SearchLib.belowPosition = function(pos, filter)
direction = { 0, -1, 0 }
maxDistance = pos.y
return returnSearchResult(pos, _, size, filter, direction, maxDistance)
end
return SearchLib
end
end)
return __bundle_require("__root")

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 400
CardID: 917441
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'4':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009070978111/18BFD42CF7BACCF65559E63F576AF35920520FDB/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: Friend or Foe?
@ -34,7 +34,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: '"Devil" (2)'
SidewaysCard: false
Snap: true

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94725
CardID: 917367
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
@ -34,7 +34,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Diabolical Luck (0)
Nickname: Diabolical Luck
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -20,7 +20,7 @@ CustomDeck:
Description: Leave No Doubt
DragSelectable: true
GMNotes: "{\n \"id\": \"90029\",\n \"type\": \"Asset\",\n \"class\": \"Neutral\",\n
\ \"permanent\": true,\n \"cycle\": \"Standalone\"\n}"
\ \"startsInPlay\": true,\n \"permanent\": true,\n \"cycle\": \"Standalone\"\n}"
GUID: 07e7bd
Grid: true
GridProjection: false

View File

@ -20,7 +20,7 @@ CustomDeck:
Description: Consult Experts
DragSelectable: true
GMNotes: "{\n \"id\": \"90027\",\n \"type\": \"Asset\",\n \"class\": \"Neutral\",\n
\ \"permanent\": true,\n \"cycle\": \"Standalone\"\n}"
\ \"startsInPlay\": true,\n \"permanent\": true,\n \"cycle\": \"Standalone\"\n}"
GUID: 2d9256
Grid: true
GridProjection: false

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94729
CardID: 917402
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3794':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3794':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3794':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -11,8 +11,8 @@ ColorDiffuse:
CustomDeck:
'3794':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/1625226898126523297/2C981A8D79F76E3533ADD355F8AF406EA72B5162/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126522542/E29FEBE196344F3DEE457BE957E9AF18310C6F39/
BackURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578166/C21CC0E4ADE06C11419F36BAEDED0BDBFF8DE5E3/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578395/F97B770FB90EA18B46F58614CCE0016406E3E777/
NumHeight: 2
NumWidth: 5
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378939
CardID: 378930
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378941
CardID: 378932
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 12105
CardID: 917333
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'121':
'9173':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2021607169641060708/B263E98D28E301D8EF45EB001FEBCE98DA25354B/
NumHeight: 2
NumWidth: 6
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632272/9A953338B599473C1631AA82F75004CE941DA8B0/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: Knows His Purpose

View File

@ -12,7 +12,7 @@ CustomDeck:
'3790':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126491470/A7FAFA92C08268717F79B2B1C83F8C23DFA6C534/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430578722/34A938F2AE5FCEDEF07D645346F9A6570FFF98E4/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 125100
CardID: 917416
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'1251':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2279448008872128231/B3D4EF69ABE3736988B015629C5862F69EB42BDC/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -33,7 +33,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Drain Essence
SidewaysCard: false
Snap: true

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378955
CardID: 378946
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,7 +3,7 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 378957
CardID: 378948
ColorDiffuse:
b: 0.71324
g: 0.71324
@ -12,7 +12,7 @@ CustomDeck:
'3789':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/1625226898126493809/0EE7F5B9B916B56425CAC1C46F7FCEF9DBF55112/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430579575/1F73F1B9316F11895AAD6A82B9AF2E2398FAD2F6/
NumHeight: 7
NumWidth: 10
Type: 0

View File

@ -3,16 +3,16 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 94749
CardID: 917434
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'947':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2286207513864999779/940B69318E315879D88F91454332BB6D0DFB03B6/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
@ -35,7 +35,7 @@ LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: Card
Nickname: Elaborate Distraction (0)
Nickname: Elaborate Distraction
SidewaysCard: false
Snap: true
Sticky: true

View File

@ -3,18 +3,18 @@ AltLookAngle:
y: 0
z: 0
Autoraise: true
CardID: 33100
CardID: 917450
ColorDiffuse:
b: 0.71324
g: 0.71324
r: 0.71324
CustomDeck:
'331':
'9174':
BackIsHidden: true
BackURL: http://cloud-3.steamusercontent.com/ugc/2342503777940352139/A2D42E7E5C43D045D72CE5CFC907E4F886C8C690/
FaceURL: http://cloud-3.steamusercontent.com/ugc/2172484009099794816/E5700422279C3B3100E11698F95F7FF2403C6362/
NumHeight: 1
NumWidth: 1
FaceURL: http://cloud-3.steamusercontent.com/ugc/2424696374430632751/4F8200D4B672882FF609D4B1B9D438C61AF20447/
NumHeight: 7
NumWidth: 10
Type: 0
UniqueBack: false
Description: ''
@ -35,7 +35,7 @@ Locked: false
LuaScript: ''
LuaScriptState: ''
MeasureMovement: false
Name: CardCustom
Name: Card
Nickname: Eldritch Tongue
SidewaysCard: false
Snap: true

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