Decompiled source of Scouting4Food v0.2.1

plugins/com.github.BurningSulphur.Scouting4Food.dll

Decompiled 3 days ago
using System;
using System.Collections;
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 Microsoft.CodeAnalysis;
using PEAKLib.Core;
using Photon.Pun;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.github.BurningSulphur.Scouting4Food")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+36ce0f8d76e2e14f211d61d134174fce943bf111")]
[assembly: AssemblyProduct("com.github.BurningSulphur.Scouting4Food")]
[assembly: AssemblyTitle("Scouting4Food")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.2.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.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;
		}
	}
}
public class Action_ReduceUsesAndSpawn : ItemAction
{
	[CompilerGenerated]
	private sealed class <SpawnItemDelayed>d__4 : IEnumerator<object>, IEnumerator, IDisposable
	{
		private int <>1__state;

		private object <>2__current;

		public Action_ReduceUsesAndSpawn <>4__this;

		private Character <c>5__2;

		private Item <item>5__3;

		private float <timeout>5__4;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <SpawnItemDelayed>d__4(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<c>5__2 = null;
			<item>5__3 = null;
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			int num = <>1__state;
			Action_ReduceUsesAndSpawn action_ReduceUsesAndSpawn = <>4__this;
			switch (num)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<c>5__2 = ((ItemActionBase)action_ReduceUsesAndSpawn).character;
				<item>5__3 = action_ReduceUsesAndSpawn.itemToSpawn;
				<timeout>5__4 = 2f;
				break;
			case 1:
				<>1__state = -1;
				break;
			}
			if ((Object)(object)action_ReduceUsesAndSpawn != (Object)null)
			{
				<timeout>5__4 -= Time.deltaTime;
				if (<timeout>5__4 <= 0f)
				{
					return false;
				}
				<>2__current = null;
				<>1__state = 1;
				return true;
			}
			GameUtils.instance.InstantiateAndGrab(<item>5__3, <c>5__2);
			return false;
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	public bool SpawnOnFullyUsed;

	public Item itemToSpawn;

	public override void RunAction()
	{
		((MonoBehaviourPun)((ItemActionBase)this).item).photonView.RPC("ReduceUsesRPC", (RpcTarget)0, Array.Empty<object>());
	}

	[PunRPC]
	public void ReduceUsesRPC()
	{
		OptionableIntItemData data = ((ItemActionBase)this).item.GetData<OptionableIntItemData>((DataEntryKey)2);
		if (data.HasData && data.Value > 0)
		{
			data.Value--;
			if (((ItemActionBase)this).item.totalUses > 0)
			{
				((ItemActionBase)this).item.SetUseRemainingPercentage((float)data.Value / (float)((ItemActionBase)this).item.totalUses);
			}
			if (data.Value == 0 && SpawnOnFullyUsed && Object.op_Implicit((Object)(object)((ItemActionBase)this).character) && ((ItemActionBase)this).character.IsLocal && (Object)(object)((ItemActionBase)this).character.data.currentItem == (Object)(object)((ItemActionBase)this).item)
			{
				((MonoBehaviour)((ItemActionBase)this).item).StartCoroutine(((ItemActionBase)this).item.ConsumeDelayed(false));
				((MonoBehaviour)((ItemActionBase)this).character).StartCoroutine(SpawnItemDelayed());
			}
		}
	}

	[IteratorStateMachine(typeof(<SpawnItemDelayed>d__4))]
	public IEnumerator SpawnItemDelayed()
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <SpawnItemDelayed>d__4(0)
		{
			<>4__this = this
		};
	}
}
namespace BepInEx
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	internal sealed class BepInAutoPluginAttribute : Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	internal sealed class PatcherAutoPluginAttribute : Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace Scouting4Food
{
	[BepInPlugin("com.github.BurningSulphur.Scouting4Food", "Scouting4Food", "0.2.1")]
	public class Plugin : BaseUnityPlugin
	{
		public const string Id = "com.github.BurningSulphur.Scouting4Food";

		internal static ManualLogSource Log { get; private set; }

		public static string Name => "Scouting4Food";

		public static string Version => "0.2.1";

		private void Awake()
		{
			Log = ((BaseUnityPlugin)this).Logger;
			Log.LogInfo((object)("Plugin " + Name + " is loading"));
			LocalizationFix();
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "chrisps.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"Chrisps items are loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "extraextremeenergydrink.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"Extra Extreme Energy Drink item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "icecream.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"Icecream item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "gob_stopper.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"gob_stopper item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "melon.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"melon item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "beans.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"beans item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "bandaid.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"bandaid item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "climberschalk.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"climbers chalk item is loaded!");
			BundleLoader.LoadBundleAndContentsWithName((BaseUnityPlugin)(object)this, "chickenleg.peakbundle", (Action<PeakBundle>)null);
			Log.LogInfo((object)"chicken leg item is loaded!");
		}

		private static void LocalizationFix()
		{
			LocalizedText.mainTable["NAME_CHICKEN DRUMSTICK"] = new List<string>(15)
			{
				"CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "MUSLO DE POLLO", "PATA DE POLLO", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK",
				"CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "CHICKEN DRUMSTICK", "OGROMNE UDKO Z KURCZAKA", "CHICKEN DRUMSTICK"
			};
			LocalizedText.mainTable["NAME_SALTY CHRISPS"] = new List<string>(15)
			{
				"SALTY CHRISPS", "SALTY CHRISPS", "SALTY CHRISPS", "SALTY CHRISPS", "PATATAS FRITAS", "PAPAS FRITAS", "SALTY CHRISPS", "SALTY CHRISPS", "SALTY CHRISPS", "SALTY CHRISPS",
				"SALTY CHRISPS", "SALTY CHRISPS", "SALTY CHRISPS", "SŁONE CZIPSY", "SALTY CHRISPS"
			};
			LocalizedText.mainTable["NAME_FLAMING HOT CHRISPS"] = new List<string>(15)
			{
				"FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "PATATAS FRITAS PICANTES", "PAPAS FRITAS PICANTES", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS",
				"FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "FLAMING HOT CHRISPS", "OGNISTE CZIPSY", "FLAMING HOT CHRISPS"
			};
			LocalizedText.mainTable["NAME_EXTRA EXTREME ENERGY DRINK"] = new List<string>(15)
			{
				"EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "BEBIDA ENERGÉTICA SÚPER EXTREMA", "BEBIDA ENERGÉTICA SÚPER EXTREMA", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK",
				"EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EXTRA EXTREME ENERGY DRINK", "EKSTREMALNY NAPÓJ ENERGETYCZNY", "EXTRA EXTREME ENERGY DRINK"
			};
			LocalizedText.mainTable["NAME_ICECREAM"] = new List<string>(15)
			{
				"ICE LOLLY", "ICE LOLLY", "ICE LOLLY", "ICE LOLLY", "POLO", "PALETA HELADA", "ICE LOLLY", "ICE LOLLY", "ICE LOLLY", "ICE LOLLY",
				"ICE LOLLY", "ICE LOLLY", "ICE LOLLY", "LÓD NA PATYKU", "ICE LOLLY"
			};
			LocalizedText.mainTable["NAME_POPCICLE STICK"] = new List<string>(15)
			{
				"POPCICLE STICK", "POPCICLE STICK", "POPCICLE STICK", "POPCICLE STICK", "PALITO DE POLO", "PALITO DE HELADO", "POPCICLE STICK", "POPCICLE STICK", "POPCICLE STICK", "POPCICLE STICK",
				"POPCICLE STICK", "POPCICLE STICK", "POPCICLE STICK", "PATYCZEK OD LODA", "POPCICLE STICK"
			};
			LocalizedText.mainTable["NAME_GOB STOPPER"] = new List<string>(15)
			{
				"GOB STOPPER", "GOB STOPPER", "GOB STOPPER", "GOB STOPPER", "ROMPEMUELAS", "ROMPEMUELAS", "GOB STOPPER", "GOB STOPPER", "GOB STOPPER", "GOB STOPPER",
				"GOB STOPPER", "GOB STOPPER", "GOB STOPPER", "ŁAMISZCZĘKA", "GOB STOPPER"
			};
			LocalizedText.mainTable["NAME_WATERMELON"] = new List<string>(15)
			{
				"WATERMELON", "WATERMELON", "WATERMELON", "WATERMELON", "SANDÍA", "SANDÍA", "WATERMELON", "WATERMELON", "WATERMELON", "WATERMELON",
				"WATERMELON", "WATERMELON", "WATERMELON", "ARBUZ", "WATERMELON"
			};
			LocalizedText.mainTable["NAME_WATERMELON SLICE"] = new List<string>(15)
			{
				"WATERMELON SLICE", "WATERMELON SLICE", "WATERMELON SLICE", "WATERMELON SLICE", "REBANADA DE SANDÍA", "REBANADA DE SANDÍA", "WATERMELON SLICE", "WATERMELON SLICE", "WATERMELON SLICE", "WATERMELON SLICE",
				"WATERMELON SLICE", "WATERMELON SLICE", "WATERMELON SLICE", "CZĘŚĆ ARBUZA", "WATERMELON SLICE"
			};
			LocalizedText.mainTable["NAME_CAN O' BEANS"] = new List<string>(15)
			{
				"CAN O' BEANS", "CAN O' BEANS", "CAN O' BEANS", "CAN O' BEANS", "LATA DE HABICHUELAS", "LATA DE FRIJOLES", "CAN O' BEANS", "CAN O' BEANS", "CAN O' BEANS", "CAN O' BEANS",
				"CAN O' BEANS", "CAN O' BEANS", "CAN O' BEANS", "PUSZKA FASOLI", "CAN O' BEANS"
			};
			LocalizedText.mainTable["NAME_STICKY PLASTER"] = new List<string>(15)
			{
				"STICKY PLASTER", "STICKY PLASTER", "STICKY PLASTER", "STICKY PLASTER", "TIRITA", "CURITA", "STICKY PLASTER", "STICKY PLASTER", "STICKY PLASTER", "STICKY PLASTER",
				"STICKY PLASTER", "STICKY PLASTER", "STICKY PLASTER", "PLASTER", "STICKY PLASTER"
			};
			LocalizedText.mainTable["NAME_CLIMBER'S CHALK"] = new List<string>(15)
			{
				"CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "MAGNESIO DE ESCALADA", "MAGNESIO EN POLVO", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK",
				"CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "MAGNEZJA WSPINACZKOWA", "CLIMBER'S CHALK"
			};
			LocalizedText.mainTable["NAME_CLIMBER'S CHALK"] = new List<string>(15)
			{
				"CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "MAGNESIO DE ESCALADA", "MAGNESIO EN POLVO", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK",
				"CLIMBER'S CHALK", "CLIMBER'S CHALK", "CLIMBER'S CHALK", "MAGNEZJA WSPINACZKOWA", "CLIMBER'S CHALK"
			};
			LocalizedText.mainTable["CHALKUP"] = new List<string>(15)
			{
				"CHALK UP", "CHALK UP", "CHALK UP", "CHALK UP", "ECHARSE MAGNESIO", "PONERSE MAGNESIO", "CHALK UP", "CHALK UP", "CHALK UP", "CHALK UP",
				"CHALK UP", "CHALK UP", "CHALK UP", "POSYP", "CHALK UP"
			};
		}
	}
}
namespace Scouting4Food.scripts
{
	public class MaterialParticleReplacer : MonoBehaviour
	{
		[Tooltip("The GameObject that contains the particle system or sum lol")]
		public GameObject targetObject;

		[Tooltip("Name of the shader to apply to particle materials")]
		public string shaderName = "SmokeParticleSimple";

		private void Start()
		{
			ReplaceParticleMaterial();
		}

		public void ReplaceParticleMaterial()
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Expected O, but got Unknown
			if ((Object)(object)targetObject == (Object)null || string.IsNullOrEmpty(shaderName))
			{
				Debug.LogWarning((object)"ERROR.");
				return;
			}
			Shader shader = Shader.Find(shaderName);
			ParticleSystemRenderer[] componentsInChildren = targetObject.GetComponentsInChildren<ParticleSystemRenderer>();
			ParticleSystemRenderer[] array = componentsInChildren;
			foreach (ParticleSystemRenderer val in array)
			{
				if ((Object)(object)((Renderer)val).sharedMaterial != (Object)null)
				{
					Material val2 = new Material(((Renderer)val).sharedMaterial);
					val2.shader = shader;
					((Renderer)val).material = val2;
				}
			}
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}