diff --git a/objects/AllPlayerCards.15bb07/AncientCovenant2.436401.gmnotes b/objects/AllPlayerCards.15bb07/AncientCovenant2.436401.gmnotes index 281bb8c8..8c2249be 100644 --- a/objects/AllPlayerCards.15bb07/AncientCovenant2.436401.gmnotes +++ b/objects/AllPlayerCards.15bb07/AncientCovenant2.436401.gmnotes @@ -2,6 +2,7 @@ "id": "07122", "type": "Asset", "class": "Survivor", + "startsInPlay": true, "level": 2, "traits": "Covenant. Blessed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/AncientCovenant2Taboo.e01cc7.gmnotes b/objects/AllPlayerCards.15bb07/AncientCovenant2Taboo.e01cc7.gmnotes index 0aeee284..f60eb88a 100644 --- a/objects/AllPlayerCards.15bb07/AncientCovenant2Taboo.e01cc7.gmnotes +++ b/objects/AllPlayerCards.15bb07/AncientCovenant2Taboo.e01cc7.gmnotes @@ -2,6 +2,7 @@ "id": "07122-t", "type": "Asset", "class": "Survivor", + "startsInPlay": true, "level": 2, "traits": "Covenant. Blessed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/BlasphemousCovenant2.10b087.gmnotes b/objects/AllPlayerCards.15bb07/BlasphemousCovenant2.10b087.gmnotes index ef82d5ad..c65da1c7 100644 --- a/objects/AllPlayerCards.15bb07/BlasphemousCovenant2.10b087.gmnotes +++ b/objects/AllPlayerCards.15bb07/BlasphemousCovenant2.10b087.gmnotes @@ -2,6 +2,7 @@ "id": "07113", "type": "Asset", "class": "Seeker", + "startsInPlay": true, "level": 2, "traits": "Covenant. Cursed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/BloodPact3.64e131.gmnotes b/objects/AllPlayerCards.15bb07/BloodPact3.64e131.gmnotes index 4ee6885a..0a149ae8 100644 --- a/objects/AllPlayerCards.15bb07/BloodPact3.64e131.gmnotes +++ b/objects/AllPlayerCards.15bb07/BloodPact3.64e131.gmnotes @@ -2,6 +2,7 @@ "id": "02191", "type": "Asset", "class": "Mystic", + "startsInPlay": true, "level": 3, "traits": "Spell. Pact.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/Directive.0994c9.gmnotes b/objects/AllPlayerCards.15bb07/Directive.0994c9.gmnotes index 882f8b32..117b626b 100644 --- a/objects/AllPlayerCards.15bb07/Directive.0994c9.gmnotes +++ b/objects/AllPlayerCards.15bb07/Directive.0994c9.gmnotes @@ -2,6 +2,7 @@ "id": "90028", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "permanent": true, "cycle": "Standalone" } diff --git a/objects/AllPlayerCards.15bb07/Directive.133521.gmnotes b/objects/AllPlayerCards.15bb07/Directive.133521.gmnotes index 05bdc00a..c3cf7b8c 100644 --- a/objects/AllPlayerCards.15bb07/Directive.133521.gmnotes +++ b/objects/AllPlayerCards.15bb07/Directive.133521.gmnotes @@ -2,6 +2,7 @@ "id": "90025", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "permanent": true, "cycle": "Standalone" } diff --git a/objects/AllPlayerCards.15bb07/Directive.706176.gmnotes b/objects/AllPlayerCards.15bb07/Directive.706176.gmnotes index 5df3354b..dd1d6252 100644 --- a/objects/AllPlayerCards.15bb07/Directive.706176.gmnotes +++ b/objects/AllPlayerCards.15bb07/Directive.706176.gmnotes @@ -2,6 +2,7 @@ "id": "90026", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "permanent": true, "cycle": "Standalone" } diff --git a/objects/AllPlayerCards.15bb07/Discipline.081db4.gmnotes b/objects/AllPlayerCards.15bb07/Discipline.081db4.gmnotes index e45496d5..5024b4e5 100644 --- a/objects/AllPlayerCards.15bb07/Discipline.081db4.gmnotes +++ b/objects/AllPlayerCards.15bb07/Discipline.081db4.gmnotes @@ -2,6 +2,7 @@ "id": "08012a", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "traits": "Unbroken.", "permanent": true, "cycle": "Edge of the Earth" diff --git a/objects/AllPlayerCards.15bb07/Discipline.3247da.gmnotes b/objects/AllPlayerCards.15bb07/Discipline.3247da.gmnotes index 2202c4a5..fa72ce44 100644 --- a/objects/AllPlayerCards.15bb07/Discipline.3247da.gmnotes +++ b/objects/AllPlayerCards.15bb07/Discipline.3247da.gmnotes @@ -2,6 +2,7 @@ "id": "08014a", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "traits": "Unbroken.", "permanent": true, "cycle": "Edge of the Earth" diff --git a/objects/AllPlayerCards.15bb07/Discipline.5ff3bd.gmnotes b/objects/AllPlayerCards.15bb07/Discipline.5ff3bd.gmnotes index dedb1e00..b921ee64 100644 --- a/objects/AllPlayerCards.15bb07/Discipline.5ff3bd.gmnotes +++ b/objects/AllPlayerCards.15bb07/Discipline.5ff3bd.gmnotes @@ -2,6 +2,7 @@ "id": "08011a", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "traits": "Unbroken.", "permanent": true, "cycle": "Edge of the Earth" diff --git a/objects/AllPlayerCards.15bb07/Discipline.e8d38d.gmnotes b/objects/AllPlayerCards.15bb07/Discipline.e8d38d.gmnotes index 31662ede..fa9d00a3 100644 --- a/objects/AllPlayerCards.15bb07/Discipline.e8d38d.gmnotes +++ b/objects/AllPlayerCards.15bb07/Discipline.e8d38d.gmnotes @@ -2,6 +2,7 @@ "id": "08013a", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "traits": "Unbroken.", "permanent": true, "cycle": "Edge of the Earth" diff --git a/objects/AllPlayerCards.15bb07/FalseCovenant2.3442f5.gmnotes b/objects/AllPlayerCards.15bb07/FalseCovenant2.3442f5.gmnotes index 310d7872..b8845091 100644 --- a/objects/AllPlayerCards.15bb07/FalseCovenant2.3442f5.gmnotes +++ b/objects/AllPlayerCards.15bb07/FalseCovenant2.3442f5.gmnotes @@ -2,6 +2,7 @@ "id": "07116", "type": "Asset", "class": "Rogue", + "startsInPlay": true, "level": 2, "traits": "Covenant. Cursed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/FamilyInheritance.394603.gmnotes b/objects/AllPlayerCards.15bb07/FamilyInheritance.394603.gmnotes index 41a47d9f..ab6b836b 100644 --- a/objects/AllPlayerCards.15bb07/FamilyInheritance.394603.gmnotes +++ b/objects/AllPlayerCards.15bb07/FamilyInheritance.394603.gmnotes @@ -2,6 +2,7 @@ "id": "05011", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "traits": "Boon.", "permanent": true, "uses": [ diff --git a/objects/AllPlayerCards.15bb07/HigherEducation3.d48b25.gmnotes b/objects/AllPlayerCards.15bb07/HigherEducation3.d48b25.gmnotes index ffd0b451..c56ec00b 100644 --- a/objects/AllPlayerCards.15bb07/HigherEducation3.d48b25.gmnotes +++ b/objects/AllPlayerCards.15bb07/HigherEducation3.d48b25.gmnotes @@ -2,6 +2,7 @@ "id": "02187", "type": "Asset", "class": "Seeker", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/KeenEye3.2f9de4.gmnotes b/objects/AllPlayerCards.15bb07/KeenEye3.2f9de4.gmnotes index 459ef57e..c10dcd17 100644 --- a/objects/AllPlayerCards.15bb07/KeenEye3.2f9de4.gmnotes +++ b/objects/AllPlayerCards.15bb07/KeenEye3.2f9de4.gmnotes @@ -2,6 +2,7 @@ "id": "02185", "type": "Asset", "class": "Guardian", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/OnYourOwn3.2ebdf1.gmnotes b/objects/AllPlayerCards.15bb07/OnYourOwn3.2ebdf1.gmnotes index 95b8ad5b..024e72cf 100644 --- a/objects/AllPlayerCards.15bb07/OnYourOwn3.2ebdf1.gmnotes +++ b/objects/AllPlayerCards.15bb07/OnYourOwn3.2ebdf1.gmnotes @@ -2,6 +2,7 @@ "id": "53010", "type": "Asset", "class": "Survivor", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/ParadoxicalCovenant2.541ee9.gmnotes b/objects/AllPlayerCards.15bb07/ParadoxicalCovenant2.541ee9.gmnotes index 8226a0f6..554cc6f5 100644 --- a/objects/AllPlayerCards.15bb07/ParadoxicalCovenant2.541ee9.gmnotes +++ b/objects/AllPlayerCards.15bb07/ParadoxicalCovenant2.541ee9.gmnotes @@ -2,6 +2,7 @@ "id": "07120", "type": "Asset", "class": "Mystic", + "startsInPlay": true, "level": 2, "traits": "Covenant. Blessed. Cursed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/SacredCovenant2.87226d.gmnotes b/objects/AllPlayerCards.15bb07/SacredCovenant2.87226d.gmnotes index 40b2c26f..c7579b86 100644 --- a/objects/AllPlayerCards.15bb07/SacredCovenant2.87226d.gmnotes +++ b/objects/AllPlayerCards.15bb07/SacredCovenant2.87226d.gmnotes @@ -2,6 +2,7 @@ "id": "07110", "type": "Asset", "class": "Guardian", + "startsInPlay": true, "level": 2, "traits": "Covenant. Blessed.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/Scrapper3.dffe4a.gmnotes b/objects/AllPlayerCards.15bb07/Scrapper3.dffe4a.gmnotes index 31798344..7b359920 100644 --- a/objects/AllPlayerCards.15bb07/Scrapper3.dffe4a.gmnotes +++ b/objects/AllPlayerCards.15bb07/Scrapper3.dffe4a.gmnotes @@ -2,6 +2,7 @@ "id": "02193", "type": "Asset", "class": "Survivor", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/Sin-Eater3.0c77d6.gmnotes b/objects/AllPlayerCards.15bb07/Sin-Eater3.0c77d6.gmnotes index c629ffde..f158cd67 100644 --- a/objects/AllPlayerCards.15bb07/Sin-Eater3.0c77d6.gmnotes +++ b/objects/AllPlayerCards.15bb07/Sin-Eater3.0c77d6.gmnotes @@ -2,6 +2,7 @@ "id": "09094", "type": "Asset", "class": "Mystic", + "startsInPlay": true, "level": 3, "traits": "Ritual.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/SticktothePlan3.82d62c.gmnotes b/objects/AllPlayerCards.15bb07/SticktothePlan3.82d62c.gmnotes index a4675843..edb593d6 100644 --- a/objects/AllPlayerCards.15bb07/SticktothePlan3.82d62c.gmnotes +++ b/objects/AllPlayerCards.15bb07/SticktothePlan3.82d62c.gmnotes @@ -2,6 +2,7 @@ "id": "03264", "type": "Asset", "class": "Guardian", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/Streetwise3.d7dbac.gmnotes b/objects/AllPlayerCards.15bb07/Streetwise3.d7dbac.gmnotes index c2e40332..dcbdaa0c 100644 --- a/objects/AllPlayerCards.15bb07/Streetwise3.d7dbac.gmnotes +++ b/objects/AllPlayerCards.15bb07/Streetwise3.d7dbac.gmnotes @@ -2,6 +2,7 @@ "id": "02189", "type": "Asset", "class": "Rogue", + "startsInPlay": true, "level": 3, "traits": "Talent.", "permanent": true, diff --git a/objects/AllPlayerCards.15bb07/TidalMemento.b4f9ee.gmnotes b/objects/AllPlayerCards.15bb07/TidalMemento.b4f9ee.gmnotes index 64d6a16e..0017f42a 100644 --- a/objects/AllPlayerCards.15bb07/TidalMemento.b4f9ee.gmnotes +++ b/objects/AllPlayerCards.15bb07/TidalMemento.b4f9ee.gmnotes @@ -2,6 +2,7 @@ "id": "90038", "type": "Asset", "class": "Neutral", + "startsInPlay": true, "permanent": true, "cycle": "Standalone" } diff --git a/src/arkhamdb/DeckImporterMain.ttslua b/src/arkhamdb/DeckImporterMain.ttslua index 5e83ddaa..feeae8c4 100644 --- a/src/arkhamdb/DeckImporterMain.ttslua +++ b/src/arkhamdb/DeckImporterMain.ttslua @@ -7,6 +7,8 @@ local playAreaApi = require("core/PlayAreaApi") local playmatApi = require("playermat/PlaymatApi") local zones = require("playermat/Zones") +local startsInPlayCount = 0 + function onLoad(script_state) initializeUi(JSON.decode(script_state)) math.randomseed(os.time()) @@ -31,7 +33,7 @@ function getDefaultCardZone(cardMetadata, bondedList) elseif cardMetadata.type == "UpgradeSheet" then return "SetAside4" elseif cardMetadata.startsInPlay then - return "BlankTop" + return startsInPlayTracker() elseif cardMetadata.permanent then return "SetAside1" elseif bondedList[cardMetadata.id] then @@ -42,6 +44,16 @@ function getDefaultCardZone(cardMetadata, bondedList) end end +function startsInPlayTracker() + startsInPlayCount = startsInPlayCount + 1 + if startsInPlayCount > 6 then + broadcastToAll("Card that should start in play was placed with permanents because no blank slots remained") + return "SetAside1" + else + return "Blank" .. startsInPlayCount + end +end + function buildDeck(playerColor, deckId) local uiState = getUiState() arkhamDb.getDecklist( @@ -450,13 +462,13 @@ function handlePeteSignatureAssets(investigatorId, cardList) if investigatorId == "02005" or investigatorId == "02005-pb" then -- regular Pete's front for i, card in ipairs(cardList) do if card.metadata.id == "02014" then -- Duke - card.zone = "BlankTop" + card.zone = startsInPlayTracker() end end elseif investigatorId == "02005-p" or investigatorId == "02005-pf" then -- parallel Pete's front for i, card in ipairs(cardList) do if card.metadata.id == "90047" then -- Pete's Guitar - card.zone = "BlankTop" + card.zone = startsInPlayTracker() end end end diff --git a/src/playermat/Zones.ttslua b/src/playermat/Zones.ttslua index 48ca8849..f989cd54 100644 --- a/src/playermat/Zones.ttslua +++ b/src/playermat/Zones.ttslua @@ -8,8 +8,8 @@ -- Investigator: Investigator card area. -- Minicard: Placement for the investigator's minicard, just above the player mat -- Deck, Discard: Standard locations for the deck and discard piles. --- BlankTop: used for assets that start in play (e.g. Duke) --- Tarot, Hand1, Hand2, Ally, BlankBottom, Accessory, Arcane1, Arcane2, Body: Asset slot positions +-- Blank1: used for assets that start in play (e.g. Duke) +-- Tarot, Hand1, Hand2, Ally, Blank4, Accessory, Arcane1, Arcane2, Body: Asset slot positions -- Threat[1-4]: Threat area slots. Threat[1-3] correspond to the named threat area slots, and Threat4 is the blank threat area slot. -- SetAside[1-3]: Column closest to the player mat, with 1 at the top and 3 at the bottom. -- SetAside[4-6]: Column farther away from the mat, with 4 at the top and 6 at the bottom. @@ -35,8 +35,12 @@ do commonZones["Arcane2"] = { -0.171, 0, 0.557 } commonZones["Tarot"] = { 0.602, 0, 0.033 } commonZones["Accessory"] = { 0.602, 0, 0.555 } - commonZones["BlankTop"] = { 1.758, 0, 0.040 } - commonZones["BlankBottom"] = { 1.754, 0, 0.563 } + commonZones["Blank1"] = { 1.758, 0, 0.040 } + commonZones["Blank2"] = { 1.754, 0, 0.563 } + commonZones["Blank3"] = { 1.371, 0, 0.038 } + commonZones["Blank4"] = { 1.371, 0, 0.558 } + commonZones["Blank5"] = { 0.98, 0, 0.035 } + commonZones["Blank6"] = { 0.977, 0, 0.556 } commonZones["Threat1"] = { -0.911, 0, -0.625 } commonZones["Threat2"] = { -0.454, 0, -0.625 } commonZones["Threat3"] = { 0.002, 0, -0.625 } @@ -55,8 +59,12 @@ do zoneData["White"]["Arcane2"] = commonZones["Arcane2"] zoneData["White"]["Tarot"] = commonZones["Tarot"] zoneData["White"]["Accessory"] = commonZones["Accessory"] - zoneData["White"]["BlankTop"] = commonZones["BlankTop"] - zoneData["White"]["BlankBottom"] = commonZones["BlankBottom"] + zoneData["White"]["Blank1"] = commonZones["Blank1"] + zoneData["White"]["Blank2"] = commonZones["Blank2"] + zoneData["White"]["Blank3"] = commonZones["Blank3"] + zoneData["White"]["Blank4"] = commonZones["Blank4"] + zoneData["White"]["Blank5"] = commonZones["Blank5"] + zoneData["White"]["Blank6"] = commonZones["Blank6"] zoneData["White"]["Threat1"] = commonZones["Threat1"] zoneData["White"]["Threat2"] = commonZones["Threat2"] zoneData["White"]["Threat3"] = commonZones["Threat3"] @@ -83,8 +91,12 @@ do zoneData["Orange"]["Arcane2"] = commonZones["Arcane2"] zoneData["Orange"]["Tarot"] = commonZones["Tarot"] zoneData["Orange"]["Accessory"] = commonZones["Accessory"] - zoneData["Orange"]["BlankTop"] = commonZones["BlankTop"] - zoneData["Orange"]["BlankBottom"] = commonZones["BlankBottom"] + zoneData["Orange"]["Blank1"] = commonZones["Blank1"] + zoneData["Orange"]["Blank2"] = commonZones["Blank2"] + zoneData["Orange"]["Blank3"] = commonZones["Blank3"] + zoneData["Orange"]["Blank4"] = commonZones["Blank4"] + zoneData["Orange"]["Blank5"] = commonZones["Blank5"] + zoneData["Orange"]["Blank6"] = commonZones["Blank6"] zoneData["Orange"]["Threat1"] = commonZones["Threat1"] zoneData["Orange"]["Threat2"] = commonZones["Threat2"] zoneData["Orange"]["Threat3"] = commonZones["Threat3"]