public static bool Prefix(ref Kingmaker.UnitLogic.FactLogic.AddPet __instance, ref int __result) { if (!ModSettings.enableSuperPet) { return(true); } if (!__instance.LevelRank) { __result = 1; return(false); } int a = RankToLevel.Length; Fact fact = __instance.Owner.GetFact(__instance.LevelRank); int? num = (fact != null) ? new int?(fact.GetRank()) : null; int num2 = UnityEngine.Mathf.Min(a, (num == null) ? 0 : num.Value); __result = RankToLevel[num2]; logger.Log($"AddPet.GetPetLevel: returning {__result}"); return(false); }
private static bool Prefix(ref Kingmaker.UnitLogic.FactLogic.AddPet __instance) { if (!ModSettings.enableSuperPet) { return(true); } if (__instance.SpawnedPet == null) { return(false); } AddClassLevels component = __instance.SpawnedPet.Blueprint.GetComponent <AddClassLevels>(); if (!component) { return(false); } int characterLevel = __instance.SpawnedPet.Descriptor.Progression.CharacterLevel; //int petLevel = __instance.GetPetLevel(); // function is private, and we have duplicated it ... int petLevel = 0; AnimalCompanionPatch2.Prefix(ref __instance, ref petLevel); int num = petLevel - characterLevel; if (num > 0) { component.LevelUp(__instance.SpawnedPet.Descriptor, num); } int a = RankToLevel.Length; Fact fact = __instance.Owner.GetFact(__instance.LevelRank); int? num2 = (fact != null) ? new int?(fact.GetRank()) : null; int num3 = UnityEngine.Mathf.Min(a, (num2 == null) ? 0 : num2.Value); if (num3 >= __instance.UpgradeLevel) { __instance.SpawnedPet.Descriptor.Progression.Features.AddFeature(__instance.UpgradeFeature, null); } return(false); }