| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using GadgetCore.API;
- using GadgetCore.Util;
- using HarmonyLib;
- using System.Collections;
- using System.Threading;
- using System.Windows.Threading;
- using UnityEngine;
- namespace Ships.Patches
- {
- [HarmonyPatch(typeof(ObjectScript))]
- [HarmonyPatch("Die")]
- [HarmonyGadget("Ships")]
- public static class Patch_ObjectScript_Die
- {
- [HarmonyPostfix]
- public static void Prefix(ObjectScript __instance, ref int ___id)
- {
- if (Network.isServer && Core.spawnObjects.Contains(___id))
- {
- if (Random.Range(0, 2) == 0)
- __instance.StartCoroutine(SpawnMultiple(__instance.transform.position.x + 2, __instance.transform.position.y, 2, 1 + Random.Range(0, 3), "e/Ships/BrokenSliver", 0.1f));
- else if (Random.Range(0, 10) == 0)
- {
- Item item = GadgetCoreAPI.EmptyItem();
- item.id = Core.itemOldTex.GetID();
- GadgetCoreAPI.SpawnItem(new Vector3(__instance.transform.position.x + 2, __instance.transform.position.y, 0.2f), item);
- }
- }
- }
- private static IEnumerator SpawnMultiple(float xBase, float yBase, float range, int amount, string name, float speed)
- {
- for (int i = 0; i < amount; i++)
- {
- int x = 0;
- int y = 0;
- if (range > 0)
- {
- x = Random.Range(-1 * (int)(range * 10), (int)(range * 10));
- y = Random.Range(-1 * (int)(range * 10), (int)(range * 10));
- }
- Network.Instantiate(Resources.Load(name), new Vector3(xBase + x / 10f, yBase + 1.1f + y / 10f, 0f), Quaternion.identity, 0);
- yield return new WaitForSeconds(speed);
- }
- yield break;
- }
- }
- }
|