-- set true to enable debug logging DEBUG = false function log(message) if DEBUG then print(message) end end --[[ Known locations and clues. We check this to determine if we should atttempt to spawn clues, first we look for _ and if we find nothing we look for format is [location_guid -> clueCount] ]] LOCATIONS_DATA_JSON = [[ { "San Francisco": {"type": "fixed", "value": 1, "clueSide": "back"}, " Arkham": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "Buenos Aires": {"type": "fixed", "value": 2, "clueSide": "back"}, " London": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rome": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Istanbul": {"type": "perPlayer", "value": 4, "clueSide": "front"}, "Tokyo_123abc": {"type": "perPlayer", "value": 0, "clueSide": "back"}, "Tokyo_456efg": {"type": "perPlayer", "value": 4, "clueSide": "back"}, "Tokyo": {"type": "fixed", "value": 2, "clueSide": "back"}, "Shanghai_123": {"type": "fixed", "value": 12, "clueSide": "front"}, "Sydney": {"type": "fixed", "value": 0, "clueSide": "front"}, "Under the Great Bridge": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Somber Memorial": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ominous Pyre": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Ominous Pyre ": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Narrow Alleyway": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Backstreet": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Moonlit Backstreet ": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Central Yharnam Promenade": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Hospital Courtyard": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Manor_adcfac": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "City Center Plaza": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Atop the Great Bridge": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Deserted Manor_e00007": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "1st Floor Sickroom": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "1st Floor Examination Room": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Chapel Transept": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Sanctuary": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Rectory": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Nave": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Chapel Attic_0e64f5": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Untended Graves": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Tomb of the Queen": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Shadowed Woods": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rotting Thicket": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Oedon Chapel Subterrane": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Clearing": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Misty Weald": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Hemwick Charnel Lane": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Gibbeting Path": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Gates of Byrgenwerth": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Trapping Village": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Derelict Coachhouse": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Burial Grove": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Abandoned Mill": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Private Library": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Research Hall": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Faculty Offices": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rooftops_e00008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Annex": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Astronomy Hall": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lecture Hall": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "University Foyer": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "*The Portrait of the First Vicar": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "*The Portrait of the Holy Blade": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "*The Portrait of the Holy Blade": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "*The Portrait of the Headmaster": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "*The Portrait of the Governess": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "Audience Chamber": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Cathedral Steps": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Cathedral Ward Cemetery": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Grand Cathedral of Yharnam": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Surgery Altar": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Bridge of Saints": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Grand Cathedral Sanctuary": {"type": "perPlayer", "value": 0, "clueSide": "front"}, "The Lumenflower Garden": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Steps of Penance": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mirror Chamber": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Branching Corridors": {"type": "fixed", "value": 1, "clueSide": "front"}, "Yale University": {"type": "fixed", "value": 1, "clueSide": "front"}, "The Cimmerian Descent": {"type": "fixed", "value": 1, "clueSide": "front"}, "The College of Mensis": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Ritual Cloister": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mensis Refectory": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Lair of the Brain": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Hypogean Gaol": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Spires of the Loft": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Featured Exhibit": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Depths of the Loft": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Dangling Cells": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Byrgenwerth": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Apostle's Gallery": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Wet Nurse's Lunarium": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Spire of Mensis": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "Aeonian Sickbeds": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Decaying Fishing Hamlet": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lumenwood Garden": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Forgotten Coast": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Advent Plaza": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Sacrificial Pits": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Yahar'gul Chapel": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Yahar'gul Commons": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Defiled Pthumerian Shrine": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Pthumeru Ihyll Labyrinth": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Tomb of Oedon": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Moonside Lake": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ailing Loran Frontier": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Bloodstained Gate": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "The Eastern Cathedral": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mergo's Loft": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Sanguine River": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Underground Corpse Pile": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Western Cathedral": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chalice Headstones": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Gates of the Dream": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chalice Headstones": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Grave-Marked Trail": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Misty Garden Path": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moon-Kissed Meadow": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Burning Workshop": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "The Dream Aflame": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Messengers' Bath": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Manor_1566a5": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Clearing_e00008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Research Hall_e00007": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rooftops_e0008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Lecture Hall_e00004": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Surgery Altar_e00007": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Lumenflower Gardens_1a433f": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Blood Healing Laboratory_998d8c": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Contact Chamber_10edc3": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Contact Chamber_31e857": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Audience Chamber_e00001": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mirror Chamber _e00003": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber _e00001": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber_e00004": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber _e00002": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Dangling Cells_49d503": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Depths of the Loft_e00007": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lair of the Brain_e0000b": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ritual Cloister_e00013": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mensis Refectory_e0000e": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Spires of the Loft_e00009": {"type": "perPlayer", "value": 2, "clueSide": "front"} } ]] PLAYER_CARD_DATA_JSON = [[ { "Tool Belt (0)": { "tokenType": "resource", "tokenCount": 2 }, "Tool Belt (3)": { "tokenType": "resource", "tokenCount": 4 }, "Yithian Rifle": { "tokenType": "resource", "tokenCount": 3 }, "xxx": { "tokenType": "resource", "tokenCount": 3 } } ]] HIDDEN_CARD_DATA = { "Unpleasant Card (Doom)", "Unpleasant Card (Gloom)", "The Case of the Scarlet DOOOOOM!" } LOCATIONS_DATA = JSON.decode(LOCATIONS_DATA_JSON) PLAYER_CARD_DATA = JSON.decode(PLAYER_CARD_DATA_JSON) function onload(save_state) local playArea = getObjectFromGUID('721ba2') playArea.call("updateLocations", {self.getGUID()}) local playerMatWhite = getObjectFromGUID('8b081b') playerMatWhite.call("updatePlayerCards", {self.getGUID()}) local playerMatOrange = getObjectFromGUID('bd0ff4') playerMatOrange.call("updatePlayerCards", {self.getGUID()}) local playerMatGreen = getObjectFromGUID('383d8b') playerMatGreen.call("updatePlayerCards", {self.getGUID()}) local playerMatRed = getObjectFromGUID('0840d5') playerMatRed.call("updatePlayerCards", {self.getGUID()}) local dataHelper = getObjectFromGUID('708279') dataHelper.call("updateHiddenCards", {self.getGUID()}) end-- set true to enable debug logging DEBUG = false function log(message) if DEBUG then print(message) end end --[[ Known locations and clues. We check this to determine if we should atttempt to spawn clues, first we look for _ and if we find nothing we look for format is [location_guid -> clueCount] ]] LOCATIONS_DATA_JSON = [[ { "San Francisco": {"type": "fixed", "value": 1, "clueSide": "back"}, " Arkham": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "Buenos Aires": {"type": "fixed", "value": 2, "clueSide": "back"}, " London": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rome": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Istanbul": {"type": "perPlayer", "value": 4, "clueSide": "front"}, "Tokyo_123abc": {"type": "perPlayer", "value": 0, "clueSide": "back"}, "Tokyo_456efg": {"type": "perPlayer", "value": 4, "clueSide": "back"}, "Tokyo": {"type": "fixed", "value": 2, "clueSide": "back"}, "Shanghai_123": {"type": "fixed", "value": 12, "clueSide": "front"}, "Sydney": {"type": "fixed", "value": 0, "clueSide": "front"}, "Under the Great Bridge": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Somber Memorial": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ominous Pyre": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Ominous Pyre ": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Narrow Alleyway": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Backstreet": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Moonlit Backstreet ": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Central Yharnam Promenade": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Hospital Courtyard": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Manor_adcfac": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "City Center Plaza": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Atop the Great Bridge": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Deserted Manor_e00007": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "1st Floor Sickroom": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "1st Floor Examination Room": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Chapel Transept": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Sanctuary": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Rectory": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chapel Nave": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Chapel Attic_0e64f5": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Untended Graves": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Tomb of the Queen": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Shadowed Woods": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rotting Thicket": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Oedon Chapel Subterrane": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Clearing": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Misty Weald": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Hemwick Charnel Lane": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Gibbeting Path": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Gates of Byrgenwerth": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Trapping Village": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Derelict Coachhouse": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Burial Grove": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Abandoned Mill": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Private Library": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Research Hall": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Faculty Offices": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rooftops_e00008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Annex": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Astronomy Hall": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lecture Hall": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "University Foyer": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "*The Portrait of the First Vicar": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "*The Portrait of the Holy Blade": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "*The Portrait of the Holy Blade": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "*The Portrait of the Headmaster": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "*The Portrait of the Governess": {"type": "perPlayer", "value": 2, "clueSide": "back"}, "Audience Chamber": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Cathedral Steps": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Cathedral Ward Cemetery": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Grand Cathedral of Yharnam": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Surgery Altar": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Bridge of Saints": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Grand Cathedral Sanctuary": {"type": "perPlayer", "value": 0, "clueSide": "front"}, "The Lumenflower Garden": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Steps of Penance": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mirror Chamber": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber ": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Branching Corridors": {"type": "fixed", "value": 1, "clueSide": "front"}, "Yale University": {"type": "fixed", "value": 1, "clueSide": "front"}, "The Cimmerian Descent": {"type": "fixed", "value": 1, "clueSide": "front"}, "The College of Mensis": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Ritual Cloister": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mensis Refectory": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Lair of the Brain": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Hypogean Gaol": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Spires of the Loft": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Featured Exhibit": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Depths of the Loft": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Dangling Cells": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Byrgenwerth": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Apostle's Gallery": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Wet Nurse's Lunarium": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Spire of Mensis": {"type": "perPlayer", "value": 1, "clueSide": "back"}, "Aeonian Sickbeds": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Decaying Fishing Hamlet": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lumenwood Garden": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Forgotten Coast": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Advent Plaza": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Sacrificial Pits": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Yahar'gul Chapel": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Yahar'gul Commons": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Defiled Pthumerian Shrine": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Pthumeru Ihyll Labyrinth": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Tomb of Oedon": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Moonside Lake": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ailing Loran Frontier": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Bloodstained Gate": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "The Eastern Cathedral": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mergo's Loft": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Sanguine River": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Underground Corpse Pile": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Western Cathedral": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chalice Headstones": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Gates of the Dream": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Chalice Headstones": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Grave-Marked Trail": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Misty Garden Path": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moon-Kissed Meadow": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Burning Workshop": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "The Dream Aflame": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Messengers' Bath": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Deserted Manor_1566a5": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Moonlit Clearing_e00008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Research Hall_e00007": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Rooftops_e0008": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Lecture Hall_e00004": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "The Surgery Altar_e00007": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "The Lumenflower Gardens_1a433f": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Blood Healing Laboratory_998d8c": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Contact Chamber_10edc3": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Contact Chamber_31e857": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Audience Chamber_e00001": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mirror Chamber _e00003": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber _e00001": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber_e00004": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Mirror Chamber _e00002": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Dangling Cells_49d503": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Depths of the Loft_e00007": {"type": "perPlayer", "value": 1, "clueSide": "front"}, "Lair of the Brain_e0000b": {"type": "perPlayer", "value": 3, "clueSide": "front"}, "Ritual Cloister_e00013": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Mensis Refectory_e0000e": {"type": "perPlayer", "value": 2, "clueSide": "front"}, "Spires of the Loft_e00009": {"type": "perPlayer", "value": 2, "clueSide": "front"} } ]] PLAYER_CARD_DATA_JSON = [[ { "Tool Belt (0)": { "tokenType": "resource", "tokenCount": 2 }, "Tool Belt (3)": { "tokenType": "resource", "tokenCount": 4 }, "Yithian Rifle": { "tokenType": "resource", "tokenCount": 3 }, "xxx": { "tokenType": "resource", "tokenCount": 3 } } ]] HIDDEN_CARD_DATA = { "Unpleasant Card (Doom)", "Unpleasant Card (Gloom)", "The Case of the Scarlet DOOOOOM!" } LOCATIONS_DATA = JSON.decode(LOCATIONS_DATA_JSON) PLAYER_CARD_DATA = JSON.decode(PLAYER_CARD_DATA_JSON) function onload(save_state) local playArea = getObjectFromGUID('721ba2') playArea.call("updateLocations", {self.getGUID()}) local playerMatWhite = getObjectFromGUID('8b081b') playerMatWhite.call("updatePlayerCards", {self.getGUID()}) local playerMatOrange = getObjectFromGUID('bd0ff4') playerMatOrange.call("updatePlayerCards", {self.getGUID()}) local playerMatGreen = getObjectFromGUID('383d8b') playerMatGreen.call("updatePlayerCards", {self.getGUID()}) local playerMatRed = getObjectFromGUID('0840d5') playerMatRed.call("updatePlayerCards", {self.getGUID()}) local dataHelper = getObjectFromGUID('708279') dataHelper.call("updateHiddenCards", {self.getGUID()}) end