// Token: 0x06000027 RID: 39 RVA: 0x00002F80 File Offset: 0x00001180 public static bool Prefix(ScannerTool __instance) { SkinnedMeshRenderer[] allComponentsInChildren = __instance.GetAllComponentsInChildren <SkinnedMeshRenderer>(); foreach (SkinnedMeshRenderer skinnedMeshRenderer in allComponentsInChildren) { bool flag = skinnedMeshRenderer.name.Contains("scanner_geo"); if (flag) { skinnedMeshRenderer.material.color = new Color32(Convert.ToByte(MainPatch.config.Scannervalue), Convert.ToByte(MainPatch.config.Scannergvalue), Convert.ToByte(MainPatch.config.Scannerbvalue), 1); } } return(true); }
private static IEnumerator GiveHardcoreScanner() { CoroutineTask <GameObject> task1 = CraftData.GetPrefabForTechTypeAsync(TechType.Scanner); yield return(task1); GameObject scannerPrefab = task1.GetResult(); GameObject gameObject1 = GameObject.Instantiate(scannerPrefab); Pickupable pickupable1 = gameObject1.GetComponent <Pickupable>(); scannerPrefab.SetActive(false); CoroutineTask <GameObject> task2 = CraftData.GetPrefabForTechTypeAsync(TechType.Battery); yield return(task2); GameObject batteryPrefab = task2.GetResult(); GameObject gameObject2 = GameObject.Instantiate(batteryPrefab); Pickupable pickupable2 = gameObject2.GetComponent <Pickupable>(); batteryPrefab.SetActive(false); #if SUBNAUTICA_EXP TaskResult <Pickupable> task3 = new TaskResult <Pickupable>(); yield return(pickupable1.PickupAsync(task3, false)); yield return(task3); pickupable1 = task3.Get(); TaskResult <Pickupable> task4 = new TaskResult <Pickupable>(); yield return(pickupable2.PickupAsync(task4, false)); yield return(task4); pickupable2 = task4.Get(); #else pickupable1.Pickup(false); pickupable2.Pickup(false); #endif ScannerTool scannerTool = pickupable1?.GetComponent <ScannerTool>(); scannerTool?.energyMixin?.batterySlot?.AddItem(pickupable2); Inventory.main.container.AddItem(pickupable1); yield break; }
public static void Postfix(ScannerTool __instance) { PDAScanner.ScanTarget scanTarget = PDAScanner.scanTarget; #if SN1 PDAScanner.Result result = PDAScanner.CanScan(); #elif BZ PDAScanner.Result result = PDAScanner.CanScan(scanTarget); #endif PDAScanner.EntryData entryData = PDAScanner.GetEntryData(PDAScanner.scanTarget.techType); if ((entryData != null && (CrafterLogic.IsCraftRecipeUnlocked(entryData.blueprint) || CrafterLogic.IsCraftRecipeUnlocked(entryData.key))) || PDAScanner.ContainsCompleteEntry(scanTarget.techType) || __instance.energyMixin.charge <= 0f || !scanTarget.isValid || result != PDAScanner.Result.Scan || !GameModeUtils.RequiresBlueprints()) { return; } #if SN1 HandReticle.main.SetInteractText(Main.config.UnKnownLabel, false, HandReticle.Hand.None); #elif BZ HandReticle.main.SetText(HandReticle.TextType.Hand, Main.config.UnKnownLabel, true, GameInput.Button.None); #endif }
private static bool Prefix(ScannerTool __instance) { if (!Mod.config.FixScannerToolTextBug) { return(true); } bool isDrawn = (bool)PlayerTool_get_isDrawn.Invoke(__instance, new object[] { }); if (isDrawn) { float idleTimer = (float)ScannerTool_idleTimer.GetValue(__instance); if (idleTimer > 0f) { float newValue = Mathf.Max(0f, idleTimer - Time.deltaTime); ScannerTool_idleTimer.SetValue(__instance, newValue); } } return(false); }
public void Awake() { thisSeamoth = GetComponent <SeaMoth>(); leftTorpedoSlot = thisSeamoth.torpedoTubeLeft.transform; energyMixin = thisSeamoth.GetComponent <EnergyMixin>(); GameObject scannerPrefab = Instantiate(CraftData.GetPrefabForTechType(TechType.Scanner)); scannerPrefab.SetActive(false); Utils.ZeroTransform(scannerPrefab.transform); ScannerTool scannerTool = scannerPrefab.GetComponent <ScannerTool>(); GameObject ScannerModuleGO = new GameObject("ScannerModuleGO"); ScannerModuleGO.transform.SetParent(leftTorpedoSlot.transform, false); Utils.ZeroTransform(ScannerModuleGO.transform); scan_loop = ScriptableObject.CreateInstance <FMODAsset>(); scan_loop.name = "scan_loop"; scan_loop.path = "event:/tools/scanner/scan_loop"; scanSound = ScannerModuleGO.AddComponent <FMOD_CustomLoopingEmitter>(); scanSound.asset = scan_loop; completeSound = ScriptableObject.CreateInstance <FMODAsset>(); completeSound.name = "scan_complete"; completeSound.path = "event:/tools/scanner/scan_complete"; fxControl = scannerTool.fxControl.GetComponentClone(ScannerModuleGO.transform); scanBeam = scannerPrefab.FindChild("x_ScannerBeam").GetPrefabClone(ScannerModuleGO.transform, false); scanCircuitTex = scannerTool.scanCircuitTex.CreateRWTextureFromNonReadableTexture(); scanOrganicTex = scannerTool.scanOrganicTex.CreateRWTextureFromNonReadableTexture(); scanCircuitColor = scannerTool.scanCircuitColor; scanOrganicColor = scannerTool.scanOrganicColor; scanBeam.transform.localPosition = new Vector3(0, 0, -0.37f); scanBeam.transform.localScale = new Vector3(1, 4.41f, 1.55f); scanBeam.transform.localRotation = Quaternion.Euler(280, 184, 185); Destroy(scannerPrefab); Destroy(ScannerModuleGO.FindChild("Scanner(Clone)(Clone)")); SetFXActive(false); Shader shader = Shader.Find("FX/Scanning"); if (shader != null) { scanMaterialCircuitFX = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; scanMaterialCircuitFX.SetTexture(ShaderPropertyID._MainTex, scanCircuitTex); scanMaterialCircuitFX.SetColor(ShaderPropertyID._Color, scanCircuitColor); scanMaterialOrganicFX = new Material(shader) { hideFlags = HideFlags.HideAndDontSave }; scanMaterialOrganicFX.SetTexture(ShaderPropertyID._MainTex, scanOrganicTex); scanMaterialOrganicFX.SetColor(ShaderPropertyID._Color, scanOrganicColor); } thisSeamoth.onToggle += OnToggle; thisSeamoth.modules.onAddItem += OnAddItem; thisSeamoth.modules.onRemoveItem += OnRemoveItem; Player.main.playerMotorModeChanged.AddHandler(this, new Event <Player.MotorMode> .HandleFunction(OnPlayerMotorModeChanged)); moduleCount = thisSeamoth.modules.GetCount(ScannerModulePrefab.TechTypeID); }