private static bool Prefix(SeaMoth __instance) { var seamoth = __instance; if (seamoth.GetComponent <PrimaryTorpedo>() == null) { var primary = seamoth.gameObject.AddComponent <PrimaryTorpedo>(); primary.Types = seamoth.torpedoTypes.Select((t) => t.techType).ToList(); } var left = __instance.gameObject.transform.Find("TorpedoSiloLeft").gameObject; var right = __instance.gameObject.transform.Find("TorpedoSiloRight").gameObject; var upperLeft = GameObject.Instantiate(left); upperLeft.name = "TorpedoSiloUpperLeft"; upperLeft.transform.SetParent(__instance.transform, false); upperLeft.transform.localPosition += new Vector3(0, 0.2f, 0); var upperRight = GameObject.Instantiate(right); upperRight.name = "TorpedoSiloUpperRight"; upperRight.transform.SetParent(__instance.transform, false); upperRight.transform.localPosition += new Vector3(0, 0.2f, 0); SubRoot baseParentComponent = __instance.GetComponentInParent <SubRoot>(); bool isDockedInCyclops = __instance.docked && baseParentComponent != null & !baseParentComponent.isBase; string isBaseText = (baseParentComponent != null ? baseParentComponent.isBase.ToString() : "null"); //Logger.Log($"Seamoth.Start: Docked in Cyclops: {isDockedInCyclops} (docked: {__instance.docked}, isBase: {isBaseText})"); var torpedoSilos = new GameObject[] { left, right, upperLeft, upperRight }; for (var i = 0; i < torpedoSilos.Length; ++i) { var index = i; var silo = torpedoSilos[i]; var handTarget = silo.GetComponent <GenericHandTarget>(); handTarget.onHandHover.RemoveAllListeners(); handTarget.onHandHover.AddListener((e) => { seamoth.OnHoverTorpedoStorageEx(index, e.transform); }); handTarget.onHandClick.RemoveAllListeners(); handTarget.onHandClick.AddListener((e) => { seamoth.OpenTorpedoStorageEx(index, e.transform); }); var collider = silo.GetComponent <CapsuleCollider>(); collider.height = collider.height / 2; collider.radius = collider.radius / 2; silo.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); } if (isDockedInCyclops) { var colliders = __instance.GetComponentsInChildren <Collider>(); foreach (var collider in colliders) { collider.enabled = false; } } return(true); }