Patch_GameScript_GetGearLevel.cs 808 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using GadgetCore.API;
  2. using GadgetCore.Util;
  3. using HarmonyLib;
  4. using System;
  5. using System.Reflection;
  6. namespace ItemLevelExtension.Patches
  7. {
  8. [HarmonyPatch(typeof(GadgetCoreAPI))]
  9. [HarmonyPatch("GetGearLevel")]
  10. [HarmonyGadget("ItemLevelExtension")]
  11. public static class Patch_GameScript_GetGearLevel
  12. {
  13. [HarmonyPrefix]
  14. public static bool Prefix(Item item, ref int __result)
  15. {
  16. int exp = item.exp;
  17. int level = 1;
  18. int nextLevelPrice = 100;
  19. int i = 0;
  20. while (exp > nextLevelPrice)
  21. {
  22. exp -= nextLevelPrice;
  23. i++;
  24. nextLevelPrice += 75 + i * 100;
  25. level++;
  26. if (level == Core.settingMaxItemLevel)
  27. {
  28. break;
  29. }
  30. }
  31. if (level > Core.settingMaxItemLevel)
  32. level = Core.settingMaxItemLevel;
  33. __result = level;
  34. return false;
  35. }
  36. }
  37. }