using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using Dissonance; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [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 = "")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("biggieCheese")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("biggieCheese")] [assembly: AssemblyTitle("biggieCheese")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] 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; } } } namespace ModelReplacement { public class MRBIGCHEESE : BodyReplacementBase { protected override GameObject LoadAssetsAndReturnModel() { string text = "bigCheese"; return Assets.MainAssetBundle.LoadAsset(text); } protected override void OnEmoteStart(int emoteID) { ((BodyReplacementBase)this).OnEmoteStart(emoteID); if (emoteID == 1 && !((BodyReplacementBase)this).controller.movementAudio.isPlaying) { ((BodyReplacementBase)this).controller.movementAudio.PlayOneShot(Assets.music); } } protected override void OnEmoteEnd() { ((BodyReplacementBase)this).OnEmoteEnd(); ((BodyReplacementBase)this).controller.movementAudio.Stop(); } protected override void AddModelScripts() { ((BodyReplacementBase)this).AddModelScripts(); GameObject gameObject = ((Component)base.replacementModel.transform.Find("Biggie_T.smd")).gameObject; JawMovement jawMovement = gameObject.AddComponent(typeof(JawMovement)) as JawMovement; jawMovement.player = ((BodyReplacementBase)this).controller; jawMovement.init(); NoseSniffle noseSniffle = gameObject.AddComponent(typeof(NoseSniffle)) as NoseSniffle; noseSniffle.player = ((BodyReplacementBase)this).controller; } } internal class JawMovement : MonoBehaviour { public PlayerControllerB player; public float maxJawOpening = 100f; public SkinnedMeshRenderer skinnedMeshRenderer; public float sensibility = 1000f; protected VoicePlayerState voice; public string blendShapeName = "Smile_Open"; public void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown if ((Object)skinnedMeshRenderer == (Object)null) { skinnedMeshRenderer = ((Component)this).GetComponent(); } } private void Update() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown if ((Object)StartOfRound.Instance.voiceChatModule == (Object)null) { return; } if (voice == null) { init(); } if (voice != null) { float num = 0f; if (voice.IsSpeaking) { num = (player.isPlayerDead ? 0f : Mathf.Clamp(voice.Amplitude * sensibility, 0f, maxJawOpening)); } float blendShapeWeight = skinnedMeshRenderer.GetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeName)); skinnedMeshRenderer.SetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeName), Mathf.Lerp(blendShapeWeight, num, 0.5f)); } } public void init() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0044: Expected O, but got Unknown StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); voice = player.voicePlayerState; if (voice == null && (Object)player == (Object)StartOfRound.Instance.localPlayerController) { voice = StartOfRound.Instance.voiceChatModule.FindPlayer(StartOfRound.Instance.voiceChatModule.LocalPlayerName); } } } internal class NoseSniffle : MonoBehaviour { public PlayerControllerB player; public SkinnedMeshRenderer skinnedMeshRenderer; public float speed = 3000f; public float minGap = 10f; public float maxGap = 30f; public string blendShapeWrinkler = "Wrinkler"; public string blendShapeDilator = "Dilator"; public float MAX_SHAPE_KEY_DEFORM = 300f; private bool isSniffling; private float nextSniffle; private float wrinklerWeight = 0f; private float dilatorWeight = 0f; private float backToBackProb = 50f; private void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown if ((Object)skinnedMeshRenderer == (Object)null) { skinnedMeshRenderer = ((Component)this).GetComponent(); } nextSniffle = Time.time + Random.Range(minGap, maxGap); } public void Update() { if (!player.isPlayerDead && Time.time >= nextSniffle && !isSniffling) { ((MonoBehaviour)this).StartCoroutine(DoSniffle()); } } private IEnumerator DoSniffle() { isSniffling = true; Console.WriteLine("GROWING"); while (wrinklerWeight < MAX_SHAPE_KEY_DEFORM && dilatorWeight < MAX_SHAPE_KEY_DEFORM) { wrinklerWeight += speed * Random.Range(0f, 1f) * Time.deltaTime; dilatorWeight += speed * Random.Range(0f, 1f) * Time.deltaTime; wrinklerWeight = Math.Clamp(wrinklerWeight, 0f, MAX_SHAPE_KEY_DEFORM); dilatorWeight = Math.Clamp(dilatorWeight, 0f, MAX_SHAPE_KEY_DEFORM); skinnedMeshRenderer.SetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeWrinkler), wrinklerWeight); skinnedMeshRenderer.SetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeDilator), dilatorWeight); yield return null; } yield return (object)new WaitForSeconds(0.1f); Console.WriteLine("SHRINKING"); while (wrinklerWeight > 0f && dilatorWeight > 0f) { wrinklerWeight -= speed * Random.Range(0.8f, 0.9f) * Time.deltaTime; dilatorWeight -= speed * Random.Range(0.8f, 0.9f) * Time.deltaTime; wrinklerWeight = Math.Clamp(wrinklerWeight, 0f, MAX_SHAPE_KEY_DEFORM); dilatorWeight = Math.Clamp(dilatorWeight, 0f, MAX_SHAPE_KEY_DEFORM); skinnedMeshRenderer.SetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeWrinkler), wrinklerWeight); skinnedMeshRenderer.SetBlendShapeWeight(skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeDilator), dilatorWeight); yield return null; } isSniffling = false; if (backToBackProb >= Random.Range(0f, 100f)) { nextSniffle = Time.time + 0.5f; backToBackProb -= 10f; } else { nextSniffle = Time.time + Random.Range(minGap, maxGap); backToBackProb = 50f; } } } [BepInPlugin("com.Drunger.BiggieCheeseModelReplacement", "biggieCheeseModelReplacement", "0.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private void Awake() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown Assets.PopulateAssets(); ModelReplacementAPI.RegisterSuitModelReplacement("Biggie Cheese", typeof(MRBIGCHEESE)); Harmony val = new Harmony("com.Drunger.BiggieCheeseModelReplacement"); val.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.Drunger.BiggieCheeseModelReplacement is loaded!"); } } public static class Assets { public static string mainAssetBundleName = "biggieCheeseBundle"; public static AssetBundle MainAssetBundle = null; public static AudioClip music; private static string fileName = "Biggie_Cheese_Mr_Boombastic"; private static string GetAssemblyName() { return Assembly.GetExecutingAssembly().GetName().Name.Replace(" ", "_"); } public static void PopulateAssets() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown if ((Object)(object)MainAssetBundle == (Object)null) { Console.WriteLine(GetAssemblyName() + "." + mainAssetBundleName); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName)) { MainAssetBundle = AssetBundle.LoadFromStream(stream); } object obj = MainAssetBundle.LoadAsset(fileName); music = (AudioClip)((obj is AudioClip) ? obj : null); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }