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 McDonaldsFix v1.0.0
McDonaldsFix.dll
Decompiled 7 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("McDonaldsFix")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("McDonaldsFix")] [assembly: AssemblyTitle("McDonaldsFix")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace McDonaldsFix { [BepInPlugin("themorningstar.mcdonaldsfix", "McDonaldsFix", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string Guid = "themorningstar.mcdonaldsfix"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; try { new Harmony("themorningstar.mcdonaldsfix").PatchAll(typeof(Plugin).Assembly); Log.LogInfo((object)"McDonaldsFix v1.0.0 patches applied."); } catch (Exception ex) { Log.LogError((object)("McDonaldsFix PatchAll failed: " + ex)); } } } [HarmonyPatch(typeof(ItemToggle), "ToggleItemLogic")] internal static class ItemToggle_ToggleItemLogic_McDsFix { private static readonly string[] AllUpgrades = new string[9] { "MapPlayerCount", "Stamina", "ExtraJump", "Range", "Strength", "Throw", "Health", "Speed", "Launch" }; private static readonly string[] GiftUpgrades = new string[8] { "Health", "Stamina", "ExtraJump", "Range", "Strength", "Throw", "Speed", "Launch" }; private static readonly HashSet<int> _consumed = new HashSet<int>(); private static void Postfix(ItemToggle __instance, bool toggle, int player) { if (!toggle || !SemiFunc.IsMasterClientOrSingleplayer() || SemiFunc.RunIsShop()) { return; } ItemAttributes component = ((Component)__instance).GetComponent<ItemAttributes>(); if ((Object)(object)component == (Object)null || (Object)(object)component.item == (Object)null) { return; } string name = (component.item.itemName ?? "").ToLower(); string go = ((Object)((Component)__instance).gameObject).name.ToLower().Replace("(clone)", "").Trim(); int num; if (IsBigMac(name, go)) { num = 1; } else if (IsHappyMeal(name, go)) { num = 2; } else { if (!IsIceCream(name, go)) { return; } num = 3; } if (_consumed.Add(((Object)__instance).GetInstanceID())) { switch (num) { case 1: ApplyBigMac(player); break; case 2: ApplyHappyMeal(player); break; default: ApplyIceCream(player); break; } ConsumeItem(__instance, component); } } private static void ConsumeItem(ItemToggle toggle, ItemAttributes attrs) { try { toggle.ToggleItem(false, -1); if ((Object)(object)StatsManager.instance != (Object)null && (Object)(object)attrs != (Object)null) { StatsManager.instance.ItemRemove(attrs.instanceName); } toggle.ToggleDisable(true); } catch (Exception ex) { Plugin.Log.LogWarning((object)("[McDonaldsFix] consume failed: " + ex.Message)); } } private static bool IsBigMac(string name, string go) { if (!name.Contains("bigmac") && !name.Contains("big mac") && !go.Contains("bigmac")) { return go.Contains("big mac"); } return true; } private static bool IsHappyMeal(string name, string go) { if (!name.Contains("happymeal") && !name.Contains("happy meal") && !go.Contains("happymeal")) { return go.Contains("happy meal"); } return true; } private static bool IsIceCream(string name, string go) { if (!name.Contains("icecream") && !name.Contains("ice cream") && !go.Contains("icecream")) { return go.Contains("ice cream"); } return true; } private static void ApplyBigMac(int playerPhotonID) { PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(playerPhotonID); if ((Object)(object)val == (Object)null) { Plugin.Log.LogWarning((object)$"[McDonaldsFix] Big Mac: no player found for photon ID {playerPhotonID}"); return; } val.playerHealth.HealOther(75, true); Plugin.Log.LogInfo((object)$"[McDonaldsFix] Big Mac → heal 75 HP → player {playerPhotonID}"); } private static void ApplyHappyMeal(int playerPhotonID) { PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(playerPhotonID); if ((Object)(object)val == (Object)null) { Plugin.Log.LogWarning((object)$"[McDonaldsFix] Happy Meal: no player found for photon ID {playerPhotonID}"); return; } string steamID = SemiFunc.PlayerGetSteamID(val); string text = GiftUpgrades[Random.Range(0, GiftUpgrades.Length)]; BroadcastUpgrade(steamID, text, 1); Plugin.Log.LogInfo((object)$"[McDonaldsFix] Happy Meal → '{text}' upgrade → player {playerPhotonID}"); } private static void ApplyIceCream(int playerPhotonID) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) PlayerAvatar val = SemiFunc.PlayerAvatarGetFromPhotonID(playerPhotonID); if ((Object)(object)val == (Object)null) { Plugin.Log.LogWarning((object)$"[McDonaldsFix] Ice Cream: no player found for photon ID {playerPhotonID}"); } else if (Random.Range(0, 2) == 0) { string steamID = SemiFunc.PlayerGetSteamID(val); string[] allUpgrades = AllUpgrades; foreach (string upgradeName in allUpgrades) { BroadcastUpgrade(steamID, upgradeName, 1); } Plugin.Log.LogInfo((object)$"[McDonaldsFix] Ice Cream → ALL upgrades → player {playerPhotonID}"); } else { val.playerHealth.HurtOther(9999, Vector3.zero, false, -1, false); Plugin.Log.LogInfo((object)$"[McDonaldsFix] Ice Cream → KILL → player {playerPhotonID}"); } } private static void BroadcastUpgrade(string steamID, string upgradeName, int amount) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.IsMultiplayer()) { PunManager.instance.photonView.RPC("TesterUpgradeCommandRPC", (RpcTarget)0, new object[3] { steamID, upgradeName, amount }); } else { PunManager.instance.TesterUpgradeCommandRPC(steamID, upgradeName, amount, default(PhotonMessageInfo)); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { internal IgnoresAccessChecksToAttribute(string assemblyName) { } } }