Merge branch 'main' into download-window

This commit is contained in:
Chr1Z93 2023-10-17 13:10:56 +02:00
commit e76cb430ff
21 changed files with 557 additions and 8 deletions

View File

@ -1557,7 +1557,14 @@
"StallforTime.7b6ed1",
"WrongPlaceRightTime.d5944e",
"SparrowMask.975d79",
"Pitchfork.45a724"
"Pitchfork.45a724",
"JimsTrumpet.7dfd5f",
"JimCulverParallel.72bf31",
"JimCulverParallelFront.c5fc80",
"VengefulShade.73bc8e",
"FinalRhapsody.561775",
"JimCulverParallelBack.aba863",
"TheBeyond.37ab47"
],
"ContainedObjects_path": "AllPlayerCards.15bb07",
"Description": "",

View File

@ -0,0 +1,8 @@
{
"id": "90051",
"type": "Treachery",
"class": "Neutral",
"traits": "Endtimes.",
"weakness": true,
"cycle": "The Dunwich Legacy"
}

View File

@ -0,0 +1,61 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 847001,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8470": {
"BackIsHidden": false,
"BackURL": "https://i.imgur.com/EcbhVuh.jpg/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195986880793/517FBB4FF8F72900B9E123DB865BCAD625F6506C/",
"NumHeight": 2,
"NumWidth": 2,
"Type": 0,
"UniqueBack": false
}
},
"Description": "Advanced",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/FinalRhapsody.561775.gmnotes",
"GUID": "561775",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": true,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Final Rhapsody",
"SidewaysCard": false,
"Snap": true,
"Sticky": true,
"Tags": [
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 78.419,
"posY": 3.193,
"posZ": 23.541,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1
},
"Value": 0,
"XmlUI": ""
}

View File

@ -0,0 +1,11 @@
{
"id": "02004-p",
"type": "Investigator",
"class": "Mystic",
"traits": "Performer. Cursed.",
"willpowerIcons": 4,
"intellectIcons": 3,
"combatIcons": 3,
"agilityIcons": 2,
"cycle": "The Dunwich Legacy"
}

View File

@ -0,0 +1,62 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 846700,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8467": {
"BackIsHidden": false,
"BackURL": "http://cloud-3.steamusercontent.com/ugc/2149964195987018702/54C63785F3AA474F635F58BC506C86A318432BD7/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195987018793/0AED4BF62C4FF3206778AD36FDB9C8E482CD3F9E/",
"NumHeight": 2,
"NumWidth": 4,
"Type": 0,
"UniqueBack": true
}
},
"Description": "The Musician",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/JimCulverParallel.72bf31.gmnotes",
"GUID": "72bf31",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Jim Culver (Parallel)",
"SidewaysCard": true,
"Snap": true,
"Sticky": true,
"Tags": [
"Investigator",
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 82.182,
"posY": 3.193,
"posZ": 26.386,
"rotX": 0,
"rotY": 180,
"rotZ": 0,
"scaleX": 1.15,
"scaleY": 1,
"scaleZ": 1.15
},
"Value": 0,
"XmlUI": ""
}

View File

@ -0,0 +1,11 @@
{
"id": "02004-pb",
"type": "Investigator",
"class": "Mystic",
"traits": "Performer.",
"willpowerIcons": 4,
"intellectIcons": 3,
"combatIcons": 3,
"agilityIcons": 2,
"cycle": "The Dunwich Legacy"
}

View File

@ -0,0 +1,62 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 846805,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8468": {
"BackIsHidden": false,
"BackURL": "http://cloud-3.steamusercontent.com/ugc/2149964195987018702/54C63785F3AA474F635F58BC506C86A318432BD7/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/1656727981627737050/3CFF9E3825033909543AD1CF843361D9243538EE/",
"NumHeight": 2,
"NumWidth": 4,
"Type": 0,
"UniqueBack": true
}
},
"Description": "The Musician",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/JimCulverParallelBack.aba863.gmnotes",
"GUID": "aba863",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Jim Culver (Parallel Back)",
"SidewaysCard": true,
"Snap": true,
"Sticky": true,
"Tags": [
"Investigator",
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 82.206,
"posY": 3.193,
"posZ": 18.459,
"rotX": 0,
"rotY": 180,
"rotZ": 0,
"scaleX": 1.15,
"scaleY": 1,
"scaleZ": 1.15
},
"Value": 0,
"XmlUI": ""
}

View File

@ -0,0 +1,11 @@
{
"id": "02004-pf",
"type": "Investigator",
"class": "Mystic",
"traits": "Performer. Cursed.",
"willpowerIcons": 4,
"intellectIcons": 3,
"combatIcons": 3,
"agilityIcons": 2,
"cycle": "The Dunwich Legacy"
}

View File

@ -0,0 +1,62 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 846905,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8469": {
"BackIsHidden": false,
"BackURL": "http://cloud-3.steamusercontent.com/ugc/1656727981627737648/F371339538812F68E38AAC0D520C525250DAC5C0/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195987018793/0AED4BF62C4FF3206778AD36FDB9C8E482CD3F9E/",
"NumHeight": 2,
"NumWidth": 4,
"Type": 0,
"UniqueBack": true
}
},
"Description": "The Musician",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/JimCulverParallelFront.c5fc80.gmnotes",
"GUID": "c5fc80",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Jim Culver (Parallel Front)",
"SidewaysCard": true,
"Snap": true,
"Sticky": true,
"Tags": [
"Investigator",
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 82.087,
"posY": 3.193,
"posZ": 22.484,
"rotX": 0,
"rotY": 180,
"rotZ": 0,
"scaleX": 1.15,
"scaleY": 1,
"scaleZ": 1.15
},
"Value": 0,
"XmlUI": ""
}

View File

@ -22,7 +22,7 @@
"UniqueBack": false
}
},
"Description": "",
"Description": "The Dead Listen",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/JimsTrumpet.03c6a7.gmnotes",
"GUID": "03c6a7",

View File

@ -0,0 +1,10 @@
{
"id": "90050",
"type": "Asset",
"class": "Neutral",
"cost": 2,
"traits": "Item. Instrument. Relic.",
"willpowerIcons": 2,
"wildIcons": 2,
"cycle": "The Dunwich Legacy"
}

View File

@ -0,0 +1,62 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 847000,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8470": {
"BackIsHidden": false,
"BackURL": "https://i.imgur.com/EcbhVuh.jpg/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195986880793/517FBB4FF8F72900B9E123DB865BCAD625F6506C/",
"NumHeight": 2,
"NumWidth": 2,
"Type": 0,
"UniqueBack": false
}
},
"Description": "The Dead Speak (Advanced)",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/JimsTrumpet.7dfd5f.gmnotes",
"GUID": "7dfd5f",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": true,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Jim's Trumpet",
"SidewaysCard": false,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 78.511,
"posY": 3.229,
"posZ": 27.011,
"rotX": 359,
"rotY": 270,
"rotZ": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1
},
"Value": 0,
"XmlUI": ""
}

View File

@ -0,0 +1,8 @@
{
"id": "90052",
"type": "Asset",
"class": "Neutral",
"permanent": true,
"startsInPlay": true,
"cycle": "Laid to Rest"
}

View File

@ -0,0 +1,62 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 847100,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8471": {
"BackIsHidden": true,
"BackURL": "http://cloud-3.steamusercontent.com/ugc/2149964195986881059/864F6EBBD2900ED6D145B8AF12F2F8C180375C83/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195986880989/13172BC914A0D729B4EFD9845FA9FDFCAB6F77F7/",
"NumHeight": 1,
"NumWidth": 1,
"Type": 0,
"UniqueBack": false
}
},
"Description": "Bleak Netherworld",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/TheBeyond.37ab47.gmnotes",
"GUID": "37ab47",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": true,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "CardCustom",
"Nickname": "The Beyond",
"SidewaysCard": false,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 78.532,
"posY": 3.193,
"posZ": 17.888,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1
},
"Value": 0,
"XmlUI": ""
}

View File

@ -0,0 +1,8 @@
{
"id": "90053",
"type": "Enemy",
"class": "Neutral",
"traits": "Monster. Geist",
"weakness": true,
"cycle": "Laid to Rest"
}

View File

@ -0,0 +1,61 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"CardID": 847002,
"ColorDiffuse": {
"b": 0.71324,
"g": 0.71324,
"r": 0.71324
},
"CustomDeck": {
"8470": {
"BackIsHidden": false,
"BackURL": "https://i.imgur.com/EcbhVuh.jpg/",
"FaceURL": "http://cloud-3.steamusercontent.com/ugc/2149964195986880793/517FBB4FF8F72900B9E123DB865BCAD625F6506C/",
"NumHeight": 2,
"NumWidth": 2,
"Type": 0,
"UniqueBack": false
}
},
"Description": "",
"DragSelectable": true,
"GMNotes_path": "AllPlayerCards.15bb07/VengefulShade.73bc8e.gmnotes",
"GUID": "73bc8e",
"Grid": true,
"GridProjection": false,
"Hands": true,
"HideWhenFaceDown": true,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Card",
"Nickname": "Vengeful Shade",
"SidewaysCard": false,
"Snap": true,
"Sticky": true,
"Tags": [
"PlayerCard"
],
"Tooltip": true,
"Transform": {
"posX": 78.455,
"posY": 3.193,
"posZ": 20.547,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1
},
"Value": 0,
"XmlUI": ""
}

View File

@ -2,7 +2,7 @@
"id": "01005-p",
"type": "Investigator",
"class": "Survivor",
"traits": "Drifter.",
"traits": "Drifter. Blessed. Cursed.",
"willpowerIcons": 4,
"intellectIcons": 3,
"combatIcons": 1,

View File

@ -2,7 +2,7 @@
"id": "01005-pf",
"type": "Investigator",
"class": "Survivor",
"traits": "Drifter.",
"traits": "Drifter. Blessed. Cursed.",
"willpowerIcons": 4,
"intellectIcons": 3,
"combatIcons": 1,

View File

@ -198,7 +198,7 @@ do
local altArt = { front = "normal", back = "normal" }
-- translating front ID
if altFrontId > 90000 and altFrontId < 90047 then
if altFrontId > 90000 and altFrontId < 90050 then
altArt.front = "parallel"
elseif altFrontId > 01500 and altFrontId < 01506 then
altArt.front = "revised"
@ -207,7 +207,7 @@ do
end
-- translating back ID
if altBackId > 90000 and altBackId < 90047 then
if altBackId > 90000 and altBackId < 90050 then
altArt.back = "parallel"
elseif altBackId > 01500 and altBackId < 01506 then
altArt.back = "revised"

View File

@ -88,6 +88,7 @@ function loadCards(slots, investigatorId, bondedList, customizations, playerColo
handleAncestralKnowledge(cardsToSpawn)
handleUnderworldMarket(cardsToSpawn, playerColor)
handleHunchDeck(investigatorId, cardsToSpawn, playerColor)
handleSpiritDeck(investigatorId, cardsToSpawn, playerColor)
handleCustomizableUpgrades(cardsToSpawn, customizations)
handlePeteSignatureAssets(investigatorId, cardsToSpawn)
@ -322,6 +323,48 @@ function handleHunchDeck(investigatorId, cardList, playerColor)
end
end
-- If the investigator is Parallel Jim Culver, extract all Ally assets to SetAside5 to build the Spirit
-- Deck.
---@param investigatorId String ID for the deck's investigator card. Passed separately because the
--- investigator may not be included in the cardList
---@param cardList Table Deck list being created
---@param playerColor String Color this deck is being loaded for
function handleSpiritDeck(investigatorId, cardList, playerColor)
if investigatorId == "02004-p" or investigatorId == "02004-pb" then -- Parallel Jim Culver
local spiritList = {}
for i, card in ipairs(cardList) do
if card.metadata.id == "90053" or (
card.metadata.type == "Asset"
and card.metadata.traits ~= nil
and string.match(card.metadata.traits, "Ally")
and card.metadata.level ~= nil
and card.metadata.level < 3) then
table.insert(spiritList, i)
end
end
-- Process allies to move them to the spirit deck. This is done in reverse
-- order because the sorting needs to be reversed (deck sorts for face down)
-- Performance here may be an issue, as table.remove() is an O(n) operation
-- which makes the full shift O(n^2). But keep it simple unless it becomes
-- a problem
for i = #spiritList, 1, -1 do
local moving = cardList[spiritList[i]]
moving.zone = "SetAside5"
table.remove(cardList, spiritList[i])
table.insert(cardList, moving)
end
if #spiritList < 10 then
printToAll("Jim's spirit deck must have 9 Ally assets but the deck only has " .. (#spiritList - 1) ..
" Ally assets.", playerColor)
elseif #spiritList > 11 then
printToAll("Moved all " .. (#spiritList - 1) ..
" Ally assets to the spirit deck, reduce it to 10 (including Vengeful Shade).", playerColor)
else
printToAll("Built Jim's spirit deck", playerColor)
end
end
end
-- For any customization upgrade cards in the card list, process the metadata from the deck to
-- set the save state to show the correct checkboxes/text field values
---@param cardList Table Deck list being created

View File

@ -245,9 +245,9 @@ INVESTIGATORS["Jenny Barnes"] = {
starterDeck = "2624961"
}
INVESTIGATORS["Jim Culver"] = {
cards = { "02004" },
cards = { "02004", "02004-p", "02004-pf", "02004-pb" },
minicards = { "02004-m" },
signatures = { "02012", "02013" },
signatures = { "02012", "02013", "90050", "90051", "90052", "90053" },
starterDeck = "2624965"
}
INVESTIGATORS["\"Ashcan\" Pete"] = {