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 MacadamiaNuts v1.1.2
MacadamiaNuts.dll
Decompiled 8 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; 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 MacadamiaNuts.Golden; using MacadamiaNuts.States; using MacadamiaNuts.States.CommonNuts; using MacadamiaNuts.Timer; using MacadamiaNuts.Valuables; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Autodesk.Fbx")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("FbxBuildTestAssets")] [assembly: IgnoresAccessChecksTo("Klattersynth")] [assembly: IgnoresAccessChecksTo("Photon3Unity3D")] [assembly: IgnoresAccessChecksTo("PhotonChat")] [assembly: IgnoresAccessChecksTo("PhotonRealtime")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")] [assembly: IgnoresAccessChecksTo("PhotonVoice.API")] [assembly: IgnoresAccessChecksTo("PhotonVoice")] [assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime.Public")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization")] [assembly: IgnoresAccessChecksTo("Sirenix.Utilities")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Formats.Fbx.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Postprocessing.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Antlr3.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Core")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Flow")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.State")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("websocket-sharp")] [assembly: AssemblyCompany("DanizHereAndNow")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.1.1.0")] [assembly: AssemblyInformationalVersion("1.1.1+1851cbae50be2df3a3d5183081e8a5d68e7a0fcc")] [assembly: AssemblyProduct("MacadamiaNuts")] [assembly: AssemblyTitle("MacadamiaNuts")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.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; } } } namespace MacadamiaNuts { [BepInPlugin("DanizHereAndNow.MacadamiaNuts", "MacadamiaNuts", "1.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MacadamiaNuts : BaseUnityPlugin { internal static MacadamiaNuts Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { } } } namespace MacadamiaNuts.Valuables { public class BigNutValuable : MonoBehaviour { [SerializeField] private float _maxDistance = 2f; [SerializeField] private Sound _meAndTheBirds; private PhysGrabObject _physGrabObject; private bool _isPushing; private void Awake() { _physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); } private void Update() { //IL_0087: Unknown result type (might be due to invalid IL or missing references) if (_physGrabObject.playerGrabbing.Any()) { foreach (PhysGrabber item in _physGrabObject.playerGrabbing.ToList()) { item.ReleaseObject(0.1f); } } _meAndTheBirds.PlayLoop(_isPushing, 0.5f, 1f, 1f); Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, _maxDistance); Collider[] array2 = array; foreach (Collider val in array2) { if (((Component)val).gameObject.CompareTag("Player")) { _isPushing = true; break; } _isPushing = false; } } private void OnDrawGizmos() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) Gizmos.color = Color.blue; Gizmos.DrawWireSphere(((Component)this).transform.position, _maxDistance); } } public class GoldenNutValuable : MonoBehaviour { [SerializeField] private GameObject _goldenPrefab; [SerializeField] private Renderer _prefabGoldenRender; [SerializeField] private ParticleSystem _shiningParticles; [SerializeField] private Sound _corryptSound; private HashSet<PlayerAvatar> _corryptedPlayers = new HashSet<PlayerAvatar>(); private List<PlayerAvatar> _players = new List<PlayerAvatar>(); private PhysGrabObject _physGrabObject; private bool _isGrabbed => _physGrabObject.playerGrabbing.Any(); private bool _isShining => _shiningParticles.isPlaying; private void Awake() { _physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); MonoBehaviour.print((object)((Object)((Component)this).GetComponentInChildren<Renderer>().material.shader).name); MonoBehaviour.print((object)((Component)this).GetComponentInChildren<Renderer>().material.shader); } private void Update() { if (!_isGrabbed) { if (!_isShining) { _shiningParticles.Play(); } else { _shiningParticles.Stop(); } UpdatePlayerList(); } else { TryCorrypt(); } } public void RemoveCorryptedPlayer(PlayerAvatar avatar) { if (_corryptedPlayers.Contains(avatar)) { _corryptedPlayers.Remove(avatar); } } private void UpdatePlayerList() { _players.Clear(); _players = _physGrabObject.playerGrabbing.Select((PhysGrabber x) => x.playerAvatar).ToList(); } private void Corrypt(List<PhysGrabber> players) { //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) Color val = default(Color); ((Color)(ref val))..ctor(1f, 0.3f, 0.6f, 1f); uint num = Convert.ToUInt32(players.Count - 1 - _players.Count); for (uint num2 = num; num2 < players.Count; num2++) { PlayerAvatar playerAvatar = players[(int)num2].playerAvatar; PlayerAvatarVisuals componentInChildren = ((Component)((Component)players[(int)num2]).transform.parent).GetComponentInChildren<PlayerAvatarVisuals>(); GoldenPlayerAvatar componentInChildren2 = ((Component)playerAvatar).GetComponentInChildren<GoldenPlayerAvatar>(); if ((Object)(object)componentInChildren2 != (Object)null) { componentInChildren2.IncreaseCorryption(); _corryptSound.Play(((Component)playerAvatar).transform.position, 1f, 1f, 1f, 1f); } else if (_corryptedPlayers.Add(playerAvatar)) { GameObject val2 = Object.Instantiate<GameObject>(_goldenPrefab, ((Component)playerAvatar).transform); GoldenPlayerAvatar component = val2.GetComponent<GoldenPlayerAvatar>(); component.Initialize(playerAvatar, componentInChildren, this); if (SemiFunc.IsMultiplayer()) { ChatManager.instance.PossessChatScheduleStart(15); ChatManager.instance.PossessChat((PossessChatID)0, "Oh, this is a very creepy feeling >//<", 1f, val, 0f, false, 0, (UnityEvent)null); ChatManager.instance.PossessChatScheduleEnd(); } } } UpdatePlayerList(); } private void TryCorrypt() { List<PhysGrabber> playerGrabbing = _physGrabObject.playerGrabbing; if (playerGrabbing.Count <= _players.Count) { UpdatePlayerList(); } else { Corrypt(playerGrabbing); } } } public class NutsValuable : MonoBehaviour { [CompilerGenerated] private sealed class <TryGetCart>d__21 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public NutsValuable <>4__this; private int <attempts>5__1; private int <i>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <TryGetCart>d__21(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <attempts>5__1 = 5; <i>5__2 = 0; break; case 1: <>1__state = -1; <i>5__2++; break; } if (<i>5__2 < <attempts>5__1) { <>4__this._cart = Object.FindAnyObjectByType<PhysGrabCart>(); if (!((Object)(object)<>4__this._cart != (Object)null)) { <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 1; return true; } } 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(); } } private const float MAX_ANGLE = 80f; [SerializeField] private MacadamiaTimerData _activeTimerData; [SerializeField] private MacadamiaTimerData _idleTimerData; [SerializeField] private GameObject _firstLayer; [SerializeField] private GameObject _secondLayer; [SerializeField] private GameObject _thirdLayer; [SerializeField] private Sound _soundCrack; [SerializeField] private Sound _semiEat; private Queue<GameObject> _nutsLayers = new Queue<GameObject>(); private List<string> _objections = new List<string>(); private ParticleSystem _particle; private PhysGrabObject _physGrabObject; private PhotonView _photonView; private PhysGrabCart _cart; private MacadamiaStateMachine _stateMachine; private bool _isGrabbed => _physGrabObject.playerGrabbing.Any(); private void Awake() { _photonView = ((Component)this).GetComponent<PhotonView>(); _particle = ((Component)this).GetComponentInChildren<ParticleSystem>(); _physGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); _nutsLayers.Enqueue(_firstLayer); _nutsLayers.Enqueue(_secondLayer); _nutsLayers.Enqueue(_thirdLayer); ((MonoBehaviour)this).StartCoroutine(TryGetCart()); _stateMachine = new MacadamiaStateMachine(); ActiveMacadamiaNuts component = ((Component)this).GetComponent<ActiveMacadamiaNuts>(); component.Initialize(_activeTimerData, 1, _semiEat, _physGrabObject, _photonView, _nutsLayers, _particle); IdleMacadamiaNuts component2 = ((Component)this).GetComponent<IdleMacadamiaNuts>(); component2.Initialize(_idleTimerData, _particle, _nutsLayers, _soundCrack, _physGrabObject, _cart, ((Component)this).transform, 80f); _stateMachine.AddState(component); _stateMachine.AddState(component2); } private void Update() { if (_isGrabbed) { _stateMachine.SetState<ActiveMacadamiaNuts>(); } else if (!_isGrabbed) { _stateMachine.SetState<IdleMacadamiaNuts>(); } _stateMachine.ExecuteState(); } public void NutsCracked() { _particle.Play(); } private void InitializeObjections() { string[] collection = new string[1] { " , fuk, ma macafamia nuff ar clumflinf" }; _objections.AddRange(collection); } [IteratorStateMachine(typeof(<TryGetCart>d__21))] private IEnumerator TryGetCart() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <TryGetCart>d__21(0) { <>4__this = this }; } } } namespace MacadamiaNuts.Timer { public class MacadamiaTimer { private float _timer = 0f; private float _counter = 0f; public MacadamiaTimer(float baseCounter) { _counter = baseCounter; } public void UpdateCounter(float newValue) { _counter = newValue; _timer = 0f; } public void Countdown(float deltaTime, Action onEnd = null) { if (_timer < _counter) { _timer += deltaTime; } else { onEnd?.Invoke(); } } } [CreateAssetMenu(fileName = "Timer - _____", menuName = "Macadamia Nuts/Timer Data")] public class MacadamiaTimerData : ScriptableObject { public float Min; public float Max; public float StartTime; } } namespace MacadamiaNuts.States { public abstract class MacadamiaState : MonoBehaviour { public abstract void Enter(); public abstract void Execute(); public abstract void Exit(); public override string ToString() { return ((object)this).GetType().Name; } } public class MacadamiaStateMachine { private Dictionary<string, MacadamiaState> _states = new Dictionary<string, MacadamiaState>(); private MacadamiaState _currentState; public void AddState(MacadamiaState state) { string text = ((object)state).ToString(); if (!_states.ContainsKey(text)) { _states.Add(text, state); Debug.Log((object)("New state (" + text + ") was added.")); } } public void SetState<T>() where T : MacadamiaState { string name = typeof(T).Name; if (_states.TryGetValue(name, out MacadamiaState value)) { if (!object.Equals(value, _currentState)) { _currentState?.Exit(); _currentState = value; _currentState.Enter(); Debug.Log((object)("This state (" + name + ") is current")); } } else { Debug.LogWarning((object)("This state (" + name + ") doesnt exist")); } } public void ExecuteState() { _currentState?.Execute(); } } } namespace MacadamiaNuts.States.CommonNuts { public class ActiveMacadamiaNuts : MacadamiaState { private Queue<GameObject> _layers = new Queue<GameObject>(); private MacadamiaTimer _timer; private float _min = 0f; private float _max = 0f; private int _damage = 1; private PhysGrabObject _grabObject; private PhotonView _photonView; private bool _isHurting; private Sound _semiEat; private ParticleSystem _particleSystem; private bool _isFilled => _layers.Any(); public void Initialize(MacadamiaTimerData macadamiaTimerData, int damage, Sound semiEat, PhysGrabObject physGrabObject, PhotonView photonView, Queue<GameObject> layers, ParticleSystem particleSystem) { _min = macadamiaTimerData.Min; _max = macadamiaTimerData.Max; _grabObject = physGrabObject; _timer = new MacadamiaTimer(macadamiaTimerData.StartTime); _damage = damage; _photonView = photonView; _semiEat = semiEat; _particleSystem = particleSystem; _layers = layers; } public override void Enter() { } public override void Exit() { _timer.UpdateCounter(Random.Range(_min, _max)); } public override void Execute() { if (_isFilled && _isHurting) { HurtPlayerEffect(); } _timer.Countdown(Time.deltaTime, delegate { List<PhysGrabber> playerGrabbing = _grabObject.playerGrabbing; if (playerGrabbing.Any()) { HurtPlayer(); } _timer.UpdateCounter(Random.Range(_min, _max)); }); } private void HurtPlayerEffect() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) foreach (PhysGrabber item in _grabObject.playerGrabbing) { _semiEat.Stop(); item.playerAvatar.playerHealth.Hurt(_damage, false, -1); _semiEat.Play(((Component)item).transform.position, 1f, 1f, 1f, 1f); if (_isFilled) { _damage = Random.Range(1, 3); } Emit(15, item.playerAvatar.spectatePoint); } _isHurting = false; } private void Emit(int count, Transform transform) { for (int i = 0; i < count; i++) { Emit(transform); } } private void Emit(Transform basePoint) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = basePoint.position + basePoint.forward * 0.3f; val += new Vector3(Random.Range(-0.1f, 0.1f), Random.Range(-0.05f, 0.1f), 0f); EmitParams val2 = default(EmitParams); ((EmitParams)(ref val2)).position = val; ((EmitParams)(ref val2)).velocity = Vector3.up * 0.2f; EmitParams val3 = val2; _particleSystem.Emit(val3, 1); } private void HurtPlayer() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.IsMasterClientOrSingleplayer()) { if (SemiFunc.IsMultiplayer()) { _photonView.RPC("HurtPlayerRPC", (RpcTarget)0, Array.Empty<object>()); } else { HurtPlayerRPC(); } } } [PunRPC] private void HurtPlayerRPC(PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.MasterOnlyRPC(_info)) { _isHurting = true; } } } public class IdleMacadamiaNuts : MacadamiaState { private float MAX_ANGLE; private Transform _objectTransform; private Queue<GameObject> _layers = new Queue<GameObject>(); private PhysGrabCart _cart; private MacadamiaTimer _timer; private float _min = 0f; private float _max = 0f; private ParticleSystem _particleSystem; private Sound _soundCrack; private PhysGrabObject _physGrabObject; private bool _isFilledByOne => _layers.Count == 1; private bool _isObjectInCart => _cart.itemsInCart.Contains(_physGrabObject); private bool _isRotatedDown { get { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) Quaternion rotation = ((Component)_objectTransform).transform.rotation; int result; if (!(((Quaternion)(ref rotation)).eulerAngles.x > MAX_ANGLE)) { rotation = ((Component)_objectTransform).transform.rotation; result = ((((Quaternion)(ref rotation)).eulerAngles.z > MAX_ANGLE) ? 1 : 0); } else { result = 1; } return (byte)result != 0; } } public void Initialize(MacadamiaTimerData macadamiaTimerData, ParticleSystem particleSystem, Queue<GameObject> layers, Sound soundCrack, PhysGrabObject physGrabObject, PhysGrabCart physGrabCart, Transform transform, float angle) { _min = macadamiaTimerData.Min; _max = macadamiaTimerData.Max; _timer = new MacadamiaTimer(macadamiaTimerData.StartTime); _particleSystem = particleSystem; _layers = layers; MAX_ANGLE = angle; _objectTransform = transform; _cart = physGrabCart; _physGrabObject = physGrabObject; _soundCrack = soundCrack; } public override void Enter() { } public override void Exit() { _timer.UpdateCounter(Random.Range(_min, _max)); } public override void Execute() { if (!_isObjectInCart && _isRotatedDown) { _timer.Countdown(Time.deltaTime, delegate { NutsCrackes(); _timer.UpdateCounter(Random.Range(_min, _max)); }); } } private void NutsCrackes() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) _particleSystem.Play(); if (_isFilledByOne) { _physGrabObject.impactDetector.DestroyObject(true); } if (_layers.Any()) { GameObject val = _layers.Dequeue(); val.SetActive(false); _physGrabObject.impactDetector.BreakMedium(_physGrabObject.centerPoint, true); _soundCrack.Play(_physGrabObject.centerPoint, 1f, 1f, 1f, 1f); } } } } namespace MacadamiaNuts.Golden { public class GoldenHead : MonoBehaviour { public void Initialize() { } } public class GoldenPlayerAvatar : MonoBehaviour { [CompilerGenerated] private sealed class <UpdateCorryptionCoroutine>d__21 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float counter; public GoldenPlayerAvatar <>4__this; private MeshRenderer[] <>s__1; private int <>s__2; private Renderer <renderer>5__3; private Material <material>5__4; private float <currentCorryption>5__5; private Material <oldMaterial>5__6; private Material[] <>s__7; private int <>s__8; private Material <m>5__9; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <UpdateCorryptionCoroutine>d__21(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>s__1 = null; <renderer>5__3 = null; <material>5__4 = null; <oldMaterial>5__6 = null; <>s__7 = null; <m>5__9 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; goto IL_018a; } <>1__state = -1; <>s__1 = <>4__this._playerRenderers; <>s__2 = 0; goto IL_01e2; IL_01e2: if (<>s__2 < <>s__1.Length) { <renderer>5__3 = (Renderer)(object)<>s__1[<>s__2]; <material>5__4 = ((IEnumerable<Material>)<renderer>5__3.materials).FirstOrDefault((Func<Material, bool>)((Material x) => ((Object)x).name == "GoldCorryption")); <>s__7 = <renderer>5__3.materials; for (<>s__8 = 0; <>s__8 < <>s__7.Length; <>s__8++) { <m>5__9 = <>s__7[<>s__8]; Debug.Log((object)<m>5__9); <m>5__9 = null; } <>s__7 = null; if (!Object.op_Implicit((Object)(object)<material>5__4)) { goto IL_01d4; } <currentCorryption>5__5 = <material>5__4.GetFloat("_GoldCorryption"); <oldMaterial>5__6 = <renderer>5__3.materials[0]; <renderer>5__3.materials[0] = <material>5__4; goto IL_018a; } <>s__1 = null; return false; IL_018a: if (<currentCorryption>5__5 >= counter * <>4__this._step) { <currentCorryption>5__5 -= Time.deltaTime; <material>5__4.SetFloat("_GoldCorryption", <currentCorryption>5__5); <>2__current = null; <>1__state = 1; return true; } <renderer>5__3.materials[0] = <oldMaterial>5__6; <material>5__4 = null; <oldMaterial>5__6 = null; <renderer>5__3 = null; goto IL_01d4; IL_01d4: <>s__2++; goto IL_01e2; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private const string MAIN_TEXTURE = "_MainTex"; private const string EDGE_STEP = "_GoldCorryption"; private const float MAX_GOLD = 1f; private const float MIN_GOLD = 0f; private float _counter = 5f; private float _maxCorruption = 0f; private Animator _animator; private PlayerAvatar _playerAvatar; private PlayerAvatarVisuals _playerAvatarVisuals; private GoldenNutValuable _corryptioner; private GoldenVingette _vingette; private MeshRenderer[] _playerRenderers; private Shader _goldenShader; private float _step => 1f / _maxCorruption; private bool _isFullCorrupted => _maxCorruption == _counter; public void Initialize(PlayerAvatar player, PlayerAvatarVisuals rig, GoldenNutValuable corryptioner) { _corryptioner = corryptioner; _playerAvatar = player; _playerAvatarVisuals = rig; GameObject meshParent = _playerAvatarVisuals.meshParent; _animator = ((Component)_playerAvatarVisuals).GetComponent<Animator>(); _vingette = ((Component)this).GetComponent<GoldenVingette>(); _goldenShader = ((Component)this).GetComponent<Renderer>().material.shader; _counter = Random.Range(2, 7); _playerRenderers = ((Component)meshParent.transform).GetComponentsInChildren<MeshRenderer>(true); AddMaterial(); } public void IncreaseCorryption() { if (_isFullCorrupted) { Death(); return; } _counter -= 1f; ((MonoBehaviour)this).StartCoroutine(UpdateCorryptionCoroutine(_counter)); _vingette.ShowCurrentVignette(_counter); } public void Revive() { Object.Destroy((Object)(object)this); } private void Death() { ((MonoBehaviour)this).StartCoroutine(UpdateCorryptionCoroutine(0f)); _animator.speed = 0f; _corryptioner.RemoveCorryptedPlayer(_playerAvatar); _playerAvatar.physGrabber.ReleaseObject(0.1f); _playerAvatar.SetSpectate(); } [IteratorStateMachine(typeof(<UpdateCorryptionCoroutine>d__21))] private IEnumerator UpdateCorryptionCoroutine(float counter) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <UpdateCorryptionCoroutine>d__21(0) { <>4__this = this, counter = counter }; } private void AddMaterial() { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown MeshRenderer[] playerRenderers = _playerRenderers; for (int i = 0; i < playerRenderers.Length; i++) { Renderer val = (Renderer)(object)playerRenderers[i]; Texture val2; if (val.material.HasProperty("_AlbedoTexture")) { val2 = val.material.GetTexture("_AlbedoTexture"); } else { if (!val.material.HasProperty("_MainTex")) { continue; } val2 = val.material.mainTexture; } Material val3 = new Material(_goldenShader) { name = "GoldCorryption" }; val3.SetTexture("_MainTex", val2); val3.SetFloat("_GoldCorryption", 1f); Material[] array = (Material[])(object)new Material[val.materials.Length + 1]; val.materials.CopyTo(array, 0); array[^1] = val3; Material[] array2 = array; foreach (Material val4 in array2) { Debug.Log((object)val4); } val.materials = array; } } } public class GoldenVingette : MonoBehaviour { [CompilerGenerated] private sealed class <ShowCurrentVignetteCoroutine>d__10 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float counter; public GoldenVingette <>4__this; private float <newValue>5__1; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <ShowCurrentVignetteCoroutine>d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (!<>4__this._material.HasProperty("_MinValue")) { Debug.Log((object)"This material doesnt has property: _MinValue"); return false; } <newValue>5__1 = 0.8f - 0.4f / counter; <>4__this._currentVignette = <>4__this._material.GetFloat("_MinValue"); break; case 1: <>1__state = -1; break; } if (<>4__this._currentVignette > <newValue>5__1) { <>4__this._currentVignette -= Time.deltaTime; <>4__this._material.SetFloat("_MinValue", <>4__this._currentVignette); <>2__current = null; <>1__state = 1; return true; } 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(); } } private const string VINGETTE_KEY = "_MinValue"; private const float MIN_VALUE = 0.4f; private const float MAX_VALUE = 0.8f; private Image _vingette; private float _currentVignette; private Material _material; private void Awake() { _vingette = ((Component)this).GetComponentInChildren<Image>(); _material = ((Graphic)_vingette).material; if (!_material.HasProperty("_MinValue")) { Debug.Log((object)"This material doesnt has property: _MinValue"); } else { _material.SetFloat("_MinValue", 0.8f); } } public void Show() { ((Component)_vingette).gameObject.SetActive(true); } public void Hide() { ((Component)_vingette).gameObject.SetActive(false); } public void ShowCurrentVignette(float counter) { ((MonoBehaviour)this).StartCoroutine(ShowCurrentVignetteCoroutine(counter)); } [IteratorStateMachine(typeof(<ShowCurrentVignetteCoroutine>d__10))] private IEnumerator ShowCurrentVignetteCoroutine(float counter) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <ShowCurrentVignetteCoroutine>d__10(0) { <>4__this = this, counter = counter }; } } }