Patch_GameScript_AddMod.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using GadgetCore.API;
  2. using HarmonyLib;
  3. using UnityEngine;
  4. namespace Ships.Patches
  5. {
  6. [HarmonyPatch(typeof(GameScript))]
  7. [HarmonyPatch("AddMod")]
  8. [HarmonyGadget("Ships")]
  9. public static class Patch_GameScript_AddMod
  10. {
  11. [HarmonyPrefix]
  12. public static bool Prefix(GameScript __instance, int a, Item ___holdingItem, GameObject[] ___modObj, Item[] ___modSlot)
  13. {
  14. ItemInfo itemInfo = ItemRegistry.GetItem(___holdingItem.id);
  15. if ((___holdingItem.id > 200 && ___holdingItem.id < 230) || (itemInfo != null && ((itemInfo.Type & ItemType.MOD) == (ItemType.MOD))))
  16. {
  17. if (___modSlot[0].id != 0)
  18. {
  19. if (___modSlot[0].aspectLvl[a] < 5)
  20. {
  21. if (___modSlot[0].aspect[a] == ___holdingItem.id || ___modSlot[0].aspect[a] == 0)
  22. {
  23. if (__instance.CanAddMod(a))
  24. {
  25. ___modSlot[0].aspectLvl[a]++;
  26. ___modObj[a].GetComponent<Animation>().Play();
  27. __instance.GetComponent<AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/addmod"), Menuu.soundLevel / 10f);
  28. ___modSlot[0].aspect[a] = ___holdingItem.id;
  29. ___holdingItem.q--;
  30. __instance.RefreshHoldingSlot();
  31. __instance.RefreshGearMods();
  32. }
  33. }
  34. else if (___modSlot[0].aspectLvl[a] == 0 && __instance.CanAddMod(a))
  35. {
  36. ___modSlot[0].aspectLvl[a]++;
  37. ___modObj[a].GetComponent<Animation>().Play();
  38. __instance.GetComponent<AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/addmod"), Menuu.soundLevel / 10f);
  39. ___modSlot[0].aspect[a] = ___holdingItem.id;
  40. ___holdingItem.q--;
  41. __instance.RefreshHoldingSlot();
  42. __instance.RefreshGearMods();
  43. }
  44. }
  45. }
  46. }
  47. return false;
  48. }
  49. }
  50. }