Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of TeamUpgradesWithChance v1.1.4
TeamUpgrades.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using REPOTeamBoosters; using REPOTeamBoosters.Patches; using TeamUpgrades.Configuration; using TeamUpgrades.Helpers; using TeamUpgrades.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("TeamUpgrades")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("TeamUpgrades")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ef74d5e5-8fe6-4b6a-86ed-0e29e12695bb")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace REPOTeamBoosters { [BepInPlugin("EvilCheetah.REPO.TeamBoosters", "Team Boosters", "1.1.4")] public class TeamBoostersBase : BaseUnityPlugin { private const string mod_guid = "EvilCheetah.REPO.TeamBoosters"; private const string mod_name = "Team Boosters"; private const string mod_version = "1.1.4"; public static TeamBoostersBase instance; private readonly Harmony harmony = new Harmony("EvilCheetah.REPO.TeamBoosters"); public ManualLogSource mls; private void Awake() { if ((Object)(object)instance == (Object)null) { instance = this; } mls = Logger.CreateLogSource("EvilCheetah.REPO.TeamBoosters"); harmony.PatchAll(typeof(TeamBoostersBase)); Configuration.Init(((BaseUnityPlugin)this).Config); (ConfigEntry<bool>, Action, string)[] array = new(ConfigEntry<bool>, Action, string)[9] { (Configuration.EnableItemUpgradeMapPlayerCountPatch, delegate { harmony.PatchAll(typeof(ItemUpgradeMapPlayerCountPatch)); }, "Map Player Count Upgrade"), (Configuration.EnableItemUpgradePlayerEnergyPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerEnergyPatch)); }, "Player Energy Upgrade"), (Configuration.EnableItemUpgradePlayerExtraJumpPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerExtraJumpPatch)); }, "Player Extra Jump Upgrade"), (Configuration.EnableItemUpgradePlayerGrabRangePatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerGrabRangePatch)); }, "Player Grab Range Upgrade"), (Configuration.EnableItemUpgradePlayerGrabStrengthPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerGrabStrengthPatch)); }, "Player Grab Strength Upgrade"), (Configuration.EnableItemUpgradePlayerGrabThrowPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerGrabThrowPatch)); }, "Player Grab Throw Upgrade"), (Configuration.EnableItemUpgradePlayerHealthPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerHealthPatch)); }, "Player Health Upgrade"), (Configuration.EnableItemUpgradePlayerSprintSpeedPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerSprintSpeedPatch)); }, "Player Sprint Speed Upgrade"), (Configuration.EnableItemUpgradePlayerTumbleLaunchPatch, delegate { harmony.PatchAll(typeof(ItemUpgradePlayerTumbleLaunchPatch)); }, "Player Thumle Lauch Upgrade") }; (ConfigEntry<bool>, Action, string)[] array2 = array; for (int i = 0; i < array2.Length; i++) { var (val, action, text) = array2[i]; if (val.Value) { action(); mls.LogInfo((object)(text + " patch is applied")); } } mls.LogInfo((object)"Team Boosters mod has been activated"); } } } namespace REPOTeamBoosters.Patches { [HarmonyPatch(typeof(ItemUpgradeMapPlayerCount), "Upgrade")] internal class ItemUpgradeMapPlayerCountPatch { private static bool Prefix(ItemUpgradeMapPlayerCount __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradeMapPlayerCount(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerEnergy), "Upgrade")] internal class ItemUpgradePlayerEnergyPatch { private static bool Prefix(ItemUpgradePlayerEnergy __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerEnergy(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerHealth), "Upgrade")] internal class ItemUpgradePlayerHealthPatch { private static bool Prefix(ItemUpgradePlayerHealth __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerHealth(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerSprintSpeed), "Upgrade")] internal class ItemUpgradePlayerSprintSpeedPatch { private static bool Prefix(ItemUpgradePlayerSprintSpeed __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerSprintSpeed(allPlayerRollResult); } return false; } } } namespace TeamUpgrades.Patches { [HarmonyPatch(typeof(ItemUpgradePlayerExtraJump), "Upgrade")] internal class ItemUpgradePlayerExtraJumpPatch { private static bool Prefix(ItemUpgradePlayerExtraJump __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerExtraJump(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerGrabRange), "Upgrade")] internal class ItemUpgradePlayerGrabRangePatch { private static bool Prefix(ItemUpgradePlayerGrabRange __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerGrabRange(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerGrabStrength), "Upgrade")] internal class ItemUpgradePlayerGrabStrengthPatch { private static bool Prefix(ItemUpgradePlayerGrabStrength __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerGrabStrength(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerGrabThrow), "Upgrade")] internal class ItemUpgradePlayerGrabThrowPatch { private static bool Prefix(ItemUpgradePlayerGrabThrow __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerThrowStrength(allPlayerRollResult); } return false; } } [HarmonyPatch(typeof(ItemUpgradePlayerTumbleLaunch), "Upgrade")] internal class ItemUpgradePlayerTumbleLaunchPatch { private static bool Prefix(ItemUpgradePlayerTumbleLaunch __instance) { object value = Traverse.Create((object)__instance).Field("itemToggle").GetValue(); int value2 = Traverse.Create(value).Field("playerTogglePhotonID").GetValue<int>(); PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(value2); string initiatorSteamId = SemiFunc.PlayerGetSteamID(val); foreach (string allPlayerRollResult in ItemUpgradeChance.GetAllPlayerRollResults(initiatorSteamId)) { PunManager.instance.UpgradePlayerTumbleLaunch(allPlayerRollResult); } return false; } } } namespace TeamUpgrades.Helpers { internal class ItemUpgradeChance { private static readonly Random RandomInstance = new Random(); public static IEnumerable<string> GetAllPlayerRollResults(string initiatorSteamId = null) { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); List<string> list2 = new List<string>(); double num = TeamUpgrades.Configuration.Configuration.UpgradeRandomChance.Value; foreach (PlayerAvatar item in list) { string text = SemiFunc.PlayerGetSteamID(item); string text2 = SemiFunc.PlayerGetName(item); if (text == initiatorSteamId) { TeamBoostersBase.instance.mls.LogInfo((object)("Player: " + text2 + "[" + text + "] is initiator - automatic success")); list2.Add(text); continue; } double num2 = RandomInstance.NextDouble(); TeamBoostersBase.instance.mls.LogInfo((object)$"Player: {text2}[{text}] Rolled {num2}, Success: {num2 <= num}"); if (num2 <= num) { list2.Add(text); } } if (initiatorSteamId != null && !list2.Contains(initiatorSteamId)) { list2.Add(initiatorSteamId); TeamBoostersBase.instance.mls.LogInfo((object)("Initiator [" + initiatorSteamId + "] not found in players list but added anyway")); } if (list2.Count == 0 && list.Count > 0) { int index = RandomInstance.Next(list.Count); PlayerAvatar val = list[index]; string text3 = SemiFunc.PlayerGetSteamID(val); string text4 = SemiFunc.PlayerGetName(val); list2.Add(text3); TeamBoostersBase.instance.mls.LogInfo((object)("No players in roll results, fallback selected: " + text4 + "[" + text3 + "]")); } return list2; } } } namespace TeamUpgrades.Configuration { internal class Configuration { public static ConfigEntry<bool> EnableItemUpgradeMapPlayerCountPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerEnergyPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerExtraJumpPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerGrabRangePatch; public static ConfigEntry<bool> EnableItemUpgradePlayerGrabStrengthPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerGrabThrowPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerHealthPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerSprintSpeedPatch; public static ConfigEntry<bool> EnableItemUpgradePlayerTumbleLaunchPatch; public static ConfigEntry<float> UpgradeRandomChance; public static void Init(ConfigFile config) { //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Expected O, but got Unknown EnableItemUpgradeMapPlayerCountPatch = config.Bind<bool>("General", "EnableUpgradeMapPlayer", true, "Enables Team Upgrades for Map Player Count Upgrade"); EnableItemUpgradePlayerEnergyPatch = config.Bind<bool>("General", "EnableUpgradePlayerEnergy", true, "Enables Team Upgrades for Player Energy Upgrade"); EnableItemUpgradePlayerExtraJumpPatch = config.Bind<bool>("General", "EnableUpgradePlayerExtraJump", true, "Enables Team Upgrades for Player Extra Jump Upgrade"); EnableItemUpgradePlayerGrabRangePatch = config.Bind<bool>("General", "EnableUpgradePlayerGrabRange", true, "Enables Team Upgrades for Player Grab Range Upgrade"); EnableItemUpgradePlayerGrabStrengthPatch = config.Bind<bool>("General", "EnableUpgradePlayerGrabStrength", true, "Enables Team Upgrades for Player Grab Strength Upgrade"); EnableItemUpgradePlayerGrabThrowPatch = config.Bind<bool>("General", "EnableUpgradePlayerGrabThrow", true, "Enables Team Upgrades for Player Grab Throw Upgrade"); EnableItemUpgradePlayerHealthPatch = config.Bind<bool>("General", "EnableUpgradePlayerHealth", true, "Enables Team Upgrades for Player Health Upgrade"); EnableItemUpgradePlayerSprintSpeedPatch = config.Bind<bool>("General", "EnableUpgradePlayerSprintSpeed", true, "Enables Team Upgrades for Player Sprint Speed Upgrade"); EnableItemUpgradePlayerTumbleLaunchPatch = config.Bind<bool>("General", "EnableUpgradePlayerTumbleLaunch", true, "Enables Team Upgrades for Player Tumble Launch Upgrade"); UpgradeRandomChance = config.Bind<float>("General", "UpgradeRandomChance", 0.25f, new ConfigDescription("Chance of each person receiving the upgrade, the consumer will be random too", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>())); } } }