Patch_ObjectScript_Die.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using GadgetCore.API;
  2. using GadgetCore.Util;
  3. using HarmonyLib;
  4. using System.Collections;
  5. using System.Threading;
  6. using System.Windows.Threading;
  7. using UnityEngine;
  8. namespace MonsterNests.Patches
  9. {
  10. [HarmonyPatch(typeof(ObjectScript))]
  11. [HarmonyPatch("Die")]
  12. [HarmonyGadget("MonsterNests")]
  13. public static class Patch_ObjectScript_Die
  14. {
  15. [HarmonyPostfix]
  16. public static void Prefix(ObjectScript __instance, ref int ___id)
  17. {
  18. if (___id == Core.objectBugspotBig.GetID())
  19. {
  20. GameScript.cadetValue += 34;
  21. if (Network.isServer)
  22. {
  23. __instance.StartCoroutine(SpawnWasps(__instance.transform.position.x, __instance.transform.position.y));
  24. }
  25. }
  26. else if (___id == Core.objectSpiderEgg.GetID())
  27. {
  28. GameScript.cadetValue += 34;
  29. __instance.StartCoroutine(Shake());
  30. if (Network.isServer)
  31. {
  32. __instance.StartCoroutine(SpawnSpiders(__instance.transform.position.x, __instance.transform.position.y));
  33. }
  34. }
  35. else if (___id == Core.objectGoldenShroom.GetID())
  36. {
  37. GameScript.cadetValue += 34;
  38. __instance.StartCoroutine(Shake());
  39. if (Network.isServer)
  40. {
  41. Network.Instantiate(Resources.Load("e/bully"), new Vector3(__instance.transform.position.x, __instance.transform.position.y + 1.1f, 0f), Quaternion.identity, 0);
  42. }
  43. }
  44. }
  45. private static IEnumerator Shake()
  46. {
  47. Camera.main.GetComponent<Animation>().Play("shake");
  48. yield return new WaitForSeconds(3.5f);
  49. Camera.main.GetComponent<Animation>().Stop();
  50. Camera.main.transform.eulerAngles = new Vector3(0f, 0f, 0f);
  51. yield break;
  52. }
  53. private static IEnumerator SpawnSpiders(float xBase, float yBase)
  54. {
  55. for (int i = 0; i < 10; i++)
  56. {
  57. int x = Random.Range(-40, 40);
  58. int y = Random.Range(-40, 40);
  59. Network.Instantiate(Resources.Load("e/rockspider"), new Vector3(xBase + x / 10f, yBase + 1.1f + y/10f, 0f), Quaternion.identity, 0);
  60. yield return new WaitForSeconds(0.3f);
  61. }
  62. yield break;
  63. }
  64. private static IEnumerator SpawnWasps(float xBase, float yBase)
  65. {
  66. for (int i = 0; i < 10; i++)
  67. {
  68. int x = Random.Range(-15, 15);
  69. int y = Random.Range(-15, 15);
  70. Network.Instantiate(Resources.Load("e/wasp"), new Vector3(xBase + x / 10f, yBase + 1.1f + y / 10f, 0f), Quaternion.identity, 0);
  71. yield return new WaitForSeconds(0.1f);
  72. }
  73. yield break;
  74. }
  75. }
  76. }