Patch_EntranceScript_SpawnEndPortal.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using GadgetCore.API;
  2. using HarmonyLib;
  3. using System.Collections;
  4. using UnityEngine;
  5. namespace LoopPortal.Patches
  6. {
  7. [HarmonyPatch(typeof(EntranceScript))]
  8. [HarmonyPatch("SpawnEndPortal")]
  9. [HarmonyGadget("LoopPortal")]
  10. public static class Patch_EntranceScript_SpawnEndPortal
  11. {
  12. [HarmonyPostfix]
  13. public static void Postfix(EntranceScript __instance)
  14. {
  15. __instance.StartCoroutine(AddPortal(__instance));
  16. }
  17. public static IEnumerator AddPortal(EntranceScript __instance)
  18. {
  19. yield return new WaitForSeconds(0.1f);
  20. if (GameScript.endPortal[0] != null && Network.isServer)
  21. {
  22. var spawnSpot = __instance.spawnSpot;
  23. var i = (GameObject)Network.Instantiate((GameObject)Resources.Load("portal"), new Vector3(spawnSpot[0].transform.position.x - 7.5f, spawnSpot[0].transform.position.y + 1.2f, 0f), Quaternion.identity, 0);
  24. i.name = "portal/4/obj";
  25. var iUA = i.transform.GetChild(0).gameObject;
  26. i.GetComponent<NetworkView>().RPC("Activate", RPCMode.All, new object[0]);
  27. iUA.GetComponent<NetworkView>().RPC("Set", RPCMode.AllBuffered, new object[] { SpawnerScript.curBiome, 0, 4 });
  28. Core.portalObject = i;
  29. }
  30. yield break;
  31. }
  32. }
  33. }