using GadgetCore.API; using GadgetCore.Util; using HarmonyLib; using System.Collections; using System.Threading; using System.Windows.Threading; using UnityEngine; namespace MonsterNests.Patches { [HarmonyPatch(typeof(ObjectScript))] [HarmonyPatch("Die")] [HarmonyGadget("MonsterNests")] public static class Patch_ObjectScript_Die { [HarmonyPostfix] public static void Prefix(ObjectScript __instance, ref int ___id) { if (___id == Core.objectBugspotBig.GetID()) { GameScript.cadetValue += 34; if (Network.isServer) { __instance.StartCoroutine(SpawnWasps(__instance.transform.position.x, __instance.transform.position.y)); } } else if (___id == Core.objectSpiderEgg.GetID()) { GameScript.cadetValue += 34; __instance.StartCoroutine(Shake()); if (Network.isServer) { __instance.StartCoroutine(SpawnSpiders(__instance.transform.position.x, __instance.transform.position.y)); } } else if (___id == Core.objectGoldenShroom.GetID()) { GameScript.cadetValue += 34; __instance.StartCoroutine(Shake()); if (Network.isServer) { Network.Instantiate(Resources.Load("e/bully"), new Vector3(__instance.transform.position.x, __instance.transform.position.y + 1.1f, 0f), Quaternion.identity, 0); } } } private static IEnumerator Shake() { Camera.main.GetComponent().Play("shake"); yield return new WaitForSeconds(3.5f); Camera.main.GetComponent().Stop(); Camera.main.transform.eulerAngles = new Vector3(0f, 0f, 0f); yield break; } private static IEnumerator SpawnSpiders(float xBase, float yBase) { for (int i = 0; i < 10; i++) { int x = Random.Range(-40, 40); int y = Random.Range(-40, 40); Network.Instantiate(Resources.Load("e/rockspider"), new Vector3(xBase + x / 10f, yBase + 1.1f + y/10f, 0f), Quaternion.identity, 0); yield return new WaitForSeconds(0.3f); } yield break; } private static IEnumerator SpawnWasps(float xBase, float yBase) { for (int i = 0; i < 10; i++) { int x = Random.Range(-15, 15); int y = Random.Range(-15, 15); Network.Instantiate(Resources.Load("e/wasp"), new Vector3(xBase + x / 10f, yBase + 1.1f + y / 10f, 0f), Quaternion.identity, 0); yield return new WaitForSeconds(0.1f); } yield break; } } }