//TODO: null checks private static void InitScans(ChainedPuzzleManager instance) { foreach (CustomBioScan scan in ConfigManager.CustomContent.ScanHolder.Scans) { Log.Debug($"Adding scan with ID of [{scan.PersistentID}]"); //Base instance GameObject scanBase = instance.m_puzzleComponentPrefabs[scan.BaseScan]; GameObject scanPrefab = UnityEngine.Object.Instantiate(scanBase); scanPrefab.transform.position = new Vector3(10000, 10000, 10000); //Setup Scanner CP_PlayerScanner playerScanner = scanPrefab.GetComponent <CP_PlayerScanner>(); playerScanner.m_reduceSpeed = scan.ReduceSpeed; playerScanner.m_reduceWhenNoPlayer = scan.ReduceWhenNoPlayer; playerScanner.m_scanRadius = scan.ScanRadius; playerScanner.m_scanSpeeds = scan.PlayersInScanMulti; playerScanner.m_playerRequirement = (PlayerRequirement)scan.PlayerRequirement; //Setup Graphics CP_Bioscan_Graphics scanGx = scanPrefab.GetComponent <CP_Bioscan_Graphics>(); scanGx.m_radius = scan.BioScanGraphics.Radius; scanGx.m_colors = ConvertToColorMode(scan.BioScanGraphics.colorModeColor); scanGx.SetText(scan.BioScanGraphics.ScanText); CP_Bioscan_Core core = scanPrefab.GetComponent <CP_Bioscan_Core>(); core.m_playerAgents = new Il2CppSystem.Collections.Generic.List <PlayerAgent>(); instance.m_puzzleComponentPrefabs.Add(scan.PersistentID, scanPrefab); } }