Merge pull request #868 from argonui/drowned-city

Add The Drowned City
This commit is contained in:
dscarpac 2024-09-15 13:03:10 -05:00 committed by GitHub
commit 8395438b30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 200 additions and 109 deletions

View File

@ -3,7 +3,6 @@
"ComponentTags_path": "ComponentTags.json",
"CustomUIAssets_path": "CustomUIAssets.json",
"DecalPallet_path": "DecalPallet.json",
"Decals": [],
"GameComplexity": "",
"GameMode": "Arkham Horror LCG - Super Complete Edition",
"GameType": "",
@ -132,6 +131,7 @@
"EdgeoftheEarth.895eaa",
"TheDream-Eaters.a16a1a",
"TheFeastofHemlockVale.c740af",
"TheDrownedCity.938aab",
"ReturntoTheCircleUndone.757324",
"OtherDoominPlay.652ff3",
"Playermat1White.8b081b",
@ -176,8 +176,7 @@
"Decoration-Ammo.b43845",
"Decoration-Ammo.d35ee9",
"VictoryDisplay.6ccd6d",
"OfficialReleasesOverview.8e22bb",
"Fan-MadeExpansionOverview.de7cae",
"BuyersGuide.b5ecc1",
"OptionPanelSource.830bd0",
"SoundCube.3c988f",
"TokenSpawningReference.f8b3a7",

View File

@ -2,7 +2,7 @@
"0": {
"body": "Welcome to Arkham Horror LCG - Super Complete Edition!\n\nMake sure to take the tour that can be started with the token in the middle of the main playarea. Some basic notes:\n\nDECKBUILDING\n- All currently existing investigators and player cards are accessible via the player card panel in the upper left corner of the table.\n\n- On the leftside underneath the Investigators, you will find the ArkhamDB Deckimporter. Insert your deck ID and it will build the deck automatically for you.\n\nSCENARIOS \u0026 SETUP\n- Arkham Horror LCG comes with a core campaign (Night of the Zealot) and several expansions. Within each box you will find all the cards required for each scenario setup, as well as a the official campaign guide PDF.\n\n2. Each scenario is setup differently, and while some of the work has been prepared beforehand (such as building encounter decks), you will have to refer to the Campaign Guide for specific instructions on how to set up each scenario.\n\nINVESTIGATOR PLAYMAT AND GAMEPLAY\n- Playermats are scripted to automate most of the gameplay for you.",
"color": "Grey",
"id": 1,
"id": 0,
"title": "Basic Intro",
"visibleColor": {
"b": 0.5,
@ -13,7 +13,7 @@
"1": {
"body": "The server host can enable or disable cards in hands being hidden from other players by going to the menu at the top of the TTS screen, clicking options, and choosing Hands. The \"Disable\" setting reveals all player hands to all players, while the \"Default\" setting means that each player can only see the cards in their own hand.",
"color": "Grey",
"id": 2,
"id": 1,
"title": "How to Hide Hands",
"visibleColor": {
"b": 0.5,

View File

@ -39,9 +39,9 @@
},
"Tooltip": true,
"Transform": {
"posX": -19.5,
"posX": -2.6,
"posY": 1.697,
"posZ": -87,
"posZ": -52,
"rotX": 90,
"rotY": 90,
"rotZ": 0,

View File

@ -10,22 +10,16 @@
"g": 0,
"r": 0
},
"CustomImage": {
"CustomTile": {
"Stackable": false,
"Stretch": true,
"Thickness": 0.1,
"Type": 0
},
"ImageScalar": 1,
"ImageSecondaryURL": "https://steamusercontent-a.akamaihd.net/ugc/2460726979851338290/FD3A124A45AFAACAB85E34060B09B52FE798E991/",
"ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/2460726979851337461/C6A08EA4A71B37F9C27E2545037F557D65BBF521/",
"WidthScale": 0
"CustomPDF": {
"PDFPage": 0,
"PDFPageOffset": 0,
"PDFPassword": "",
"PDFUrl": "https://steamusercontent-a.akamaihd.net/ugc/2369545214002116550/E767153EDE2129C09FA16ECB856C33D3C356C322/"
},
"Description": "",
"DragSelectable": true,
"GMNotes": "",
"GUID": "8e22bb",
"GUID": "b5ecc1",
"Grid": true,
"GridProjection": false,
"Hands": false,
@ -33,24 +27,24 @@
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScript": "require(\"util/BuyersGuide\")",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Custom_Tile",
"Nickname": "Official Releases Overview",
"Name": "Custom_PDF",
"Nickname": "Buyer's Guide",
"Snap": true,
"Sticky": true,
"Tooltip": true,
"Transform": {
"posX": -1.6,
"posY": 1.481,
"posZ": -55,
"posZ": -71.5,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 13,
"scaleX": 6.5,
"scaleY": 1,
"scaleZ": 13
"scaleZ": 6.5
},
"Value": 0,
"XmlUI": ""

View File

@ -56,7 +56,7 @@
"Transform": {
"posX": 20.6,
"posY": 1.481,
"posZ": -65,
"posZ": -52,
"rotX": 0,
"rotY": 270,
"rotZ": 0,

View File

@ -1,57 +0,0 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"ColorDiffuse": {
"b": 0,
"g": 0,
"r": 0
},
"CustomImage": {
"CustomTile": {
"Stackable": false,
"Stretch": true,
"Thickness": 0.1,
"Type": 0
},
"ImageScalar": 1,
"ImageSecondaryURL": "https://steamusercontent-a.akamaihd.net/ugc/2460726979851342612/65DEC18BEFEFB1117CFEAAE9AB15B442AE8B557B/",
"ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/2460726979851342006/859CF14CE18A4F8C2AFDADA3E69E1B6864154696/",
"WidthScale": 0
},
"Description": "",
"DragSelectable": true,
"GMNotes": "",
"GUID": "de7cae",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Custom_Tile",
"Nickname": "Fan-Made Expansion Overview",
"Snap": true,
"Sticky": true,
"Tooltip": true,
"Transform": {
"posX": -1.6,
"posY": 1.481,
"posZ": -75,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 13,
"scaleY": 1,
"scaleZ": 13
},
"Value": 0,
"XmlUI": ""
}

View File

@ -44,9 +44,9 @@
],
"Tooltip": true,
"Transform": {
"posX": -26,
"posX": -9,
"posY": 1.481,
"posZ": -87,
"posZ": -52,
"rotX": 0,
"rotY": 270,
"rotZ": 0,

View File

@ -27,6 +27,11 @@
"Name": "OtherCards",
"Type": 0,
"URL": "https://steamusercontent-a.akamaihd.net/ugc/2446096169989812196/B5C491331EB348C261F561DC7A19968ECF9FC74A/"
},
{
"Name": "TheDrownedCity",
"Type": 0,
"URL": "https://steamusercontent-a.akamaihd.net/ugc/2369545214002978835/12B417B2D54F76D9451D8152F6BBE5C2FEDB4853/"
}
],
"Description": "",

View File

@ -0,0 +1,69 @@
{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"ColorDiffuse": {
"a": 0.27451,
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "",
"Convex": true,
"CustomShader": {
"FresnelStrength": 0,
"SpecularColor": {
"b": 1,
"g": 1,
"r": 1
},
"SpecularIntensity": 0,
"SpecularSharpness": 2
},
"DiffuseURL": "https://steamusercontent-a.akamaihd.net/ugc/2369545213997868328/C9BCD9CFF1036A4236DF87099E944F5C1BB43937/",
"MaterialIndex": 3,
"MeshURL": "https://raw.githubusercontent.com/RobMayer/TTSLibrary/master/advboxes/core_h_MSH.obj",
"NormalURL": "",
"TypeIndex": 0
},
"Description": "",
"DragSelectable": true,
"GMNotes": "the_drowned_city",
"GUID": "938aab",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "require(\"core/DownloadBox\")",
"LuaScriptState": "",
"MeasureMovement": false,
"Name": "Custom_Model",
"Nickname": "The Drowned City",
"Snap": true,
"Sticky": true,
"Tags": [
"CampaignBox"
],
"Tooltip": true,
"Transform": {
"posX": 20.6,
"posY": 1.481,
"posZ": -91,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 1,
"scaleY": 0.14,
"scaleZ": 1
},
"Value": 0,
"XmlUI": ""
}

View File

@ -56,7 +56,7 @@
"Transform": {
"posX": 20.6,
"posY": 1.481,
"posZ": -91,
"posZ": -78,
"rotX": 0,
"rotY": 270,
"rotZ": 0,

View File

@ -54,9 +54,9 @@
],
"Tooltip": true,
"Transform": {
"posX": 20.6,
"posX": 35.4,
"posY": 1.481,
"posZ": -52,
"posZ": -91,
"rotX": 0,
"rotY": 270,
"rotZ": 0,

View File

@ -56,7 +56,7 @@
"Transform": {
"posX": 20.6,
"posY": 1.481,
"posZ": -78,
"posZ": -65,
"rotX": 0,
"rotY": 270,
"rotZ": 0,

View File

@ -375,12 +375,35 @@ function createXML(showOtherCardsButton)
}
}
-- add "The Drowned City" cycle button
local TDCButtonXml = {
tag = "Panel",
attributes = {
position = "58.1 65.5 -11",
rotation = "0 0 180",
height = "225",
width = "225",
scale = "0.1 0.1 1",
onClick = "spawnTDC"
},
children = {
tag = "Image",
attributes = { image = "TheDrownedCity" }
}
}
-- center the button if it's the only one
if not showOtherCardsButton then
TDCButtonXml.attributes.position = "44.25 65.5 -11"
end
table.insert(xmlTable, TDCButtonXml)
-- add the "Additional Cards" button if cards without cycle were detected
if showOtherCardsButton then
local otherCardsButtonXml = {
tag = "Panel",
attributes = {
position = "44.25 65.5 -11",
position = "31.45 65.5 -11",
rotation = "0 0 180",
height = "225",
width = "225",
@ -403,6 +426,10 @@ function spawnOtherCards()
spawnCycle("Other")
end
function spawnTDC()
spawnCycle("The Drowned City")
end
function toggleHelp(_, playerColor, _)
if helpVisibleToPlayers[playerColor] then
helpVisibleToPlayers[playerColor] = nil
@ -604,6 +631,7 @@ end
-- Spawns the defined starter deck for the given investigator's.
---@param investigatorName string Name of the investigator, matching a key in InvestigatorPanelData
function spawnStarterDeck(investigatorName, investigatorData, position)
if not investigatorData.starterDeck then return end
for _, spawnSpec in ipairs(buildCommonSpawnSpec(investigatorName, investigatorData, position, true)) do
spawnBag.spawn(spawnSpec)
end
@ -707,6 +735,11 @@ function spawnCycle(cycle)
end
local cardList = allCardsBagApi.getCardsByCycle(cycle, sortByMetadata, includeNoLevelCards)
if #cardList == 0 then
printToAll("Didn't find any cards for '" .. cycle .. "'.")
return
end
prepareToPlaceCards()
local rowCount = spawnInvestigators(cycle)

View File

@ -3,13 +3,13 @@ BONDED_CARD_LIST = {
"06277", -- Wish Eater
"06019", -- Bloodlust
"06022", -- Pendant of the Queen
"05317", -- Blood-rite
"05317", -- Blood-Rite
"06113", -- Essence of the Dream
"06028", -- Stars Are Right
"06025", -- Guardian of the Crystallizer
"06028", -- Stars Are Right
"06283", -- Unbound Beast
"06032", -- Zeal
"06031", -- Hope
"06032", -- Zeal
"06033", -- Augur
"06331", -- Dream Parasite
"06015a", -- Dream-Gate
@ -30,24 +30,24 @@ BONDED_CARD_LIST = {
}
UPGRADE_SHEET_LIST = {
"09040-c", -- Alchemical Distillation
"09023-c", -- Custom Modifications
"09059-c", -- Damning Testimony
"09041-c", -- Emperical Hypothesis
"09060-c", -- Friends in Low Places
"09101-c", -- Grizzled
"09061-c", -- Honed Instinct
"09021-c", -- Hunter's Armor
"09119-c", -- Hyperphysical Shotcaster
"09079-c", -- Living Ink
"09100-c", -- Makeshift Trap
"09099-c", -- Pocket Multi Tool
"09081-c", -- Power Word
"09040-c", -- Alchemical Distillation
"09023-c", -- Custom Modifications
"09059-c", -- Damning Testimony
"09041-c", -- Emperical Hypothesis
"09060-c", -- Friends in Low Places
"09101-c", -- Grizzled
"09061-c", -- Honed Instinct
"09021-c", -- Hunter's Armor
"09119-c", -- Hyperphysical Shotcaster
"09079-c", -- Living Ink
"09100-c", -- Makeshift Trap
"09099-c", -- Pocket Multi Tool
"09081-c", -- Power Word
"09081-t-c", -- Power Word (Taboo)
"09022-c", -- Runic Axe
"09022-c", -- Runic Axe
"09022-t-c", -- Runic Axe (Taboo)
"09080-c", -- Summoned Servitor
"09042-c", -- Raven's Quill
"09080-c", -- Summoned Servitor
"09042-c", -- Raven's Quill
}
EVOLVED_WEAKNESSES = {
@ -212,6 +212,14 @@ INVESTIGATOR_GROUPS = {
"Alessandra Zorzi",
"Kōhaku Narukami",
"Hank Samson"
--[[},
["The Drowned City"] = {
"Marion Tavares",
"Lucius Galloway",
"Agatha Crane",
"Michael McGlen",
"Gloria Goldberg",
"George Barnaby"]]
}
}
@ -575,6 +583,37 @@ INVESTIGATORS["Hank Samson"] = {
signatures = { "10017", "10018" },
starterDeck = "3893788"
}
-- The Drowned City
INVESTIGATORS["Marion Tavares"] = {
cards = { "10001" },
minicards = { "10001-m" },
signatures = { "10002", "10002", "10003" }
}
INVESTIGATORS["Lucius Galloway"] = {
cards = { "10015" },
minicards = { "10015-m" },
signatures = { "10017", "10018" }
}
INVESTIGATORS["Agatha Crane"] = {
cards = { "10007", "10008" },
minicards = { "10007-m", "10008-m" },
signatures = { "10009", "10010" }
}
INVESTIGATORS["Michael McGlen"] = {
cards = { "11011" },
minicards = { "11011-m" },
signatures = { "11012", "11013" }
}
INVESTIGATORS["Gloria Goldberg"] = {
cards = { "11014" },
minicards = { "11014-m" },
signatures = { "11015", "11015", "11015", "11016", "11016", "11016" }
}
INVESTIGATORS["George Barnaby"] = {
cards = { "10017" },
minicards = { "10017-m" },
signatures = {}
}
-- PnP content
INVESTIGATORS["Subject 5U-21"] = {
cards = { "89001" },

View File

@ -0,0 +1,9 @@
function onPlayerAction(_, action, targets)
if action == Player.Action.FlipOver and #targets == 1 and targets[1] == self then
local page = self.Book.getPage()
self.Book.setPage((page + 1) % 4)
return false
end
return true
end