Patch_GameScript_GetItemLevel.cs 857 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(GameScript))]
  9. [HarmonyPatch("GetItemLevel")]
  10. [HarmonyGadget("ItemLevelExtension")]
  11. public static class Patch_GameScript_GetItemLevel
  12. {
  13. [HarmonyPrefix]
  14. public static bool Prefix(GameScript __instance, int exp, ref int __result, ref int ___pastCap)
  15. {
  16. int level = 1;
  17. int nextLevelPrice = 100;
  18. int i = 0;
  19. while (exp > nextLevelPrice)
  20. {
  21. ___pastCap = nextLevelPrice;
  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. }