The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of DevilMayClimb v0.4.0
plugins/com.github.Scoops.DevilMayClimb.dll
Decompiled 2 days agousing System; using System.Collections.Generic; 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 BepInEx.Configuration; using BepInEx.Logging; using DevilMayClimb.Monobehavior; using DevilMayClimb.Patch; using DevilMayClimb.Service; using HarmonyLib; using Microsoft.CodeAnalysis; using Peak.Afflictions; using Photon.Pun; using TMPro; using UnityEngine; using UnityEngine.UI; [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.Scoops.DevilMayClimb")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.4.0.0")] [assembly: AssemblyInformationalVersion("0.4.0+fddb9a662fb4df0d22e952bbb5e59391711de5a5")] [assembly: AssemblyProduct("com.github.Scoops.DevilMayClimb")] [assembly: AssemblyTitle("DevilMayClimb")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.4.0.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 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 DevilMayClimb { public class Config { public static ConfigEntry<float> styleVolume; public static ConfigEntry<float> decayMult; public static ConfigEntry<float> rankMult; public static ConfigEntry<bool> comboScaling; public Config(ConfigFile cfg) { styleVolume = cfg.Bind<float>("General", "styleVolume", 0.5f, "The volume of the Style audio (0-1)."); decayMult = cfg.Bind<float>("General", "decayMult", 1f, "The multplier for Style Decay. Higher numbers = Faster decay."); rankMult = cfg.Bind<float>("General", "rankMult", 1f, "The multplier for Style Rank size. Higher numbers means more points needed to hit the next Style Rank. 1 = 100pts to rank up."); comboScaling = cfg.Bind<bool>("General", "comboScaling", true, "Enable combo scaling, so longer combos are worth more bonuses."); } } [BepInPlugin("com.github.Scoops.DevilMayClimb", "DevilMayClimb", "0.4.0")] public class Plugin : BaseUnityPlugin { private readonly Harmony _harmony = new Harmony("com.github.Scoops.DevilMayClimb"); internal static AssetBundle DMCAssets; public const string Id = "com.github.Scoops.DevilMayClimb"; public static Config DMCConfig { get; internal set; } internal static ManualLogSource Log { get; private set; } public static string Name => "DevilMayClimb"; public static string Version => "0.4.0"; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)("Loading " + Name + " Version " + Version)); string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); string text = Path.Combine(directoryName, "devilmayclimbassets"); DMCAssets = AssetBundle.LoadFromFile(text); DMCConfig = new Config(((BaseUnityPlugin)this).Config); DMCAssetManager.Init(); Log.LogInfo((object)"Applying patches..."); ApplyPluginPatch(); Log.LogInfo((object)"Patches applied"); } private void ApplyPluginPatch() { _harmony.PatchAll(typeof(PlayerPatch)); } } } namespace DevilMayClimb.Service { public class DMCAssetManager { public static AudioClip wipeout; public static AudioClip fail; public static AudioClip minorTrick_0; public static AudioClip trick_0; public static AudioClip trick_1; public static AudioClip trick_2; public static AudioClip trick_3; public static AudioClip trick_4; public static Sprite dRank; public static Sprite cRank; public static Sprite bRank; public static Sprite aRank; public static Sprite sRank; public static Sprite ssRank; public static Sprite sssRank; public static Sprite dRankFill; public static Sprite cRankFill; public static Sprite bRankFill; public static Sprite aRankFill; public static Sprite sRankFill; public static Sprite ssRankFill; public static Sprite sssRankFill; public static Sprite dTitle; public static Sprite cTitle; public static Sprite bTitle; public static Sprite aTitle; public static Sprite sTitle; public static Sprite ssTitle; public static Sprite sssTitle; public static GameObject styleUIPrefab; public static GameObject trickUIPanelPrefab; public static AudioClip[] trickChain; public static Sprite[] ranks; public static Sprite[] fills; public static Sprite[] titles; public static void Init() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Expected O, but got Unknown //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Expected O, but got Unknown //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Expected O, but got Unknown //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Expected O, but got Unknown //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Expected O, but got Unknown //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Expected O, but got Unknown //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Expected O, but got Unknown //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Expected O, but got Unknown //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Expected O, but got Unknown //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Expected O, but got Unknown //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Expected O, but got Unknown //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Expected O, but got Unknown //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Expected O, but got Unknown //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Expected O, but got Unknown //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Expected O, but got Unknown //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Expected O, but got Unknown //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Expected O, but got Unknown //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Expected O, but got Unknown Plugin.Log.LogInfo((object)"Loading Assets..."); styleUIPrefab = (GameObject)Plugin.DMCAssets.LoadAsset("StyleGroup"); trickUIPanelPrefab = (GameObject)Plugin.DMCAssets.LoadAsset("TrickUIPrefab"); dRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("DRank")[1]; cRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("CRank")[1]; bRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("BRank")[1]; aRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("ARank")[1]; sRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SRank")[1]; ssRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSRank")[1]; sssRank = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSSRank")[1]; dRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("DRankFill")[1]; cRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("CRankFill")[1]; bRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("BRankFill")[1]; aRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("ARankFill")[1]; sRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SRankFill")[1]; ssRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSRankFill")[1]; sssRankFill = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSSRankFill")[1]; dTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("DTitle")[1]; cTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("CTitle")[1]; bTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("BTitle")[1]; aTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("ATitle")[1]; sTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("STitle")[1]; ssTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSTitle")[1]; sssTitle = (Sprite)Plugin.DMCAssets.LoadAssetWithSubAssets("SSSTitle")[1]; wipeout = (AudioClip)Plugin.DMCAssets.LoadAsset("Wipeout"); fail = (AudioClip)Plugin.DMCAssets.LoadAsset("Fail"); minorTrick_0 = (AudioClip)Plugin.DMCAssets.LoadAsset("MinorTrick_0"); trick_0 = (AudioClip)Plugin.DMCAssets.LoadAsset("Trick_0"); trick_1 = (AudioClip)Plugin.DMCAssets.LoadAsset("Trick_1"); trick_2 = (AudioClip)Plugin.DMCAssets.LoadAsset("Trick_2"); trick_3 = (AudioClip)Plugin.DMCAssets.LoadAsset("Trick_3"); trick_4 = (AudioClip)Plugin.DMCAssets.LoadAsset("Trick_4"); trickChain = (AudioClip[])(object)new AudioClip[5] { trick_0, trick_1, trick_2, trick_3, trick_4 }; ranks = (Sprite[])(object)new Sprite[7] { dRank, cRank, bRank, aRank, sRank, ssRank, sssRank }; fills = (Sprite[])(object)new Sprite[7] { dRankFill, cRankFill, bRankFill, aRankFill, sRankFill, ssRankFill, sssRankFill }; titles = (Sprite[])(object)new Sprite[7] { dTitle, cTitle, bTitle, aTitle, sTitle, ssTitle, sssTitle }; } private static Sprite ConvertToSprite(Texture2D tex) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) return Sprite.Create(tex, new Rect(0f, 0f, (float)((Texture)tex).width, (float)((Texture)tex).height), new Vector2(0.5f, 0.5f), 100f, 1u, (SpriteMeshType)1); } } public struct StyleMod { public string Descriptor; public float Modifier; public StyleMod(string descriptor, float modifier) { Descriptor = descriptor; Modifier = modifier; } } public static class StyleManager { private static Character? LocalCharacter; private static GameObject StyleUI; private static Transform TrickHistory; private static AudioSource StyleAudio; private static Image rankImage; private static Image rankFillImage; private static Image titleImage; private static Transform ComboPanel; private static TextMeshProUGUI ComboNumber; private static TextMeshProUGUI ComboPoints; private static int comboCounterTotalPoints = 0; private static int previousStyleRank = 0; private static float lastTrickTime; private static int trickChain = 0; private static Color32 SUCCESS_COLOR = new Color32((byte)86, (byte)197, (byte)0, byte.MaxValue); private static Color32 FAILURE_COLOR = new Color32((byte)195, (byte)12, (byte)21, byte.MaxValue); private static string[] FAIL_LINES = new string[3] { "Oof", "Ouch", "Owie" }; private static bool init = false; private static Item lastThrownItem; private static Vector3 lastThrownItemPos; private static void Init() { GlobalEvents.OnItemConsumed = (Action<Item, Character>)Delegate.Combine(GlobalEvents.OnItemConsumed, new Action<Item, Character>(CheckItemEaten)); GlobalEvents.OnLuggageOpened = (Action<Luggage, Character>)Delegate.Combine(GlobalEvents.OnLuggageOpened, new Action<Luggage, Character>(CheckLuggageOpened)); GlobalEvents.OnItemThrown = (Action<Item>)Delegate.Combine(GlobalEvents.OnItemThrown, new Action<Item>(CheckItemThrown)); GlobalEvents.OnItemRequested = (Action<Item, Character>)Delegate.Combine(GlobalEvents.OnItemRequested, new Action<Item, Character>(CheckItemCaught)); init = true; } public static void RegisterPlayer(Player localPlayer) { if (!init) { Init(); } AttachHUD(); } public static void RegisterCharacter(Character localCharacter) { if ((Object)(object)LocalCharacter != (Object)null) { Object.Destroy((Object)(object)((Component)LocalCharacter).gameObject.GetComponent<StyleTracker>()); } LocalCharacter = localCharacter; ((Component)LocalCharacter).gameObject.AddComponent<StyleTracker>(); } public static void AttachHUD() { StyleUI = Object.Instantiate<GameObject>(DMCAssetManager.styleUIPrefab, ((Component)GUIManager.instance.hudCanvas).transform); TrickHistory = StyleUI.transform.Find("StylePanel/TrickHistory"); StyleAudio = StyleUI.GetComponent<AudioSource>(); StyleAudio.volume = Config.styleVolume.Value; rankImage = ((Component)StyleUI.transform.Find("StylePanel/Rank")).GetComponent<Image>(); rankFillImage = ((Component)StyleUI.transform.Find("StylePanel/Rank/RankFill")).GetComponent<Image>(); titleImage = ((Component)StyleUI.transform.Find("StylePanel/Title")).GetComponent<Image>(); ((Component)rankFillImage).gameObject.AddComponent<FillBounce>(); ComboPanel = StyleUI.transform.Find("StylePanel/ComboPanel"); ComboNumber = ((Component)ComboPanel.Find("ComboNumber")).GetComponent<TextMeshProUGUI>(); ComboPoints = ((Component)ComboPanel.Find("ComboPoints")).GetComponent<TextMeshProUGUI>(); } public static void ApplyStyleAction(string action, int points, float time, int comboCount) { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) if (points < 0) { StyleAudio.PlayOneShot(DMCAssetManager.fail); } else if (points < 50) { StyleAudio.PlayOneShot(DMCAssetManager.minorTrick_0); } else { float num = time - lastTrickTime; lastTrickTime = time; if (num < 5f) { trickChain++; if (trickChain > 4) { trickChain = 4; } StyleAudio.PlayOneShot(DMCAssetManager.trickChain[trickChain]); } else { trickChain = 0; StyleAudio.PlayOneShot(DMCAssetManager.trick_0); } } if (points < 0) { AddTrickHistory(action + "! " + points, FAILURE_COLOR); } else { AddTrickHistory(action + "! +" + points, SUCCESS_COLOR); } UpdateComboCounter(points, comboCount); } public static void ApplyFailure() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) StyleAudio.PlayOneShot(DMCAssetManager.fail); AddTrickHistory(FAIL_LINES[Random.Range(0, 3)] + "! -" + 100f * Config.rankMult.Value, FAILURE_COLOR); } public static void ApplyWipeout(int points) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) StyleAudio.PlayOneShot(DMCAssetManager.wipeout); AddTrickHistory("Wipeout! -" + points, FAILURE_COLOR); } public static void UpdateComboCounter(int points, int comboCount) { if (comboCount == 2) { ((Component)ComboPanel).GetComponent<Animator>().Play("ComboAppear"); } ((TMP_Text)ComboNumber).text = comboCount.ToString(); comboCounterTotalPoints += points; ((TMP_Text)ComboPoints).text = comboCounterTotalPoints + " pts"; } public static void DropCombo() { ((Component)ComboPanel).GetComponent<Animator>().Play("ComboDisappear"); comboCounterTotalPoints = 0; } public static void UpdateStyleRank(int rank) { rankImage.sprite = DMCAssetManager.ranks[rank]; rankFillImage.sprite = DMCAssetManager.fills[rank]; titleImage.sprite = DMCAssetManager.titles[rank]; if (previousStyleRank < rank) { rankFillImage.fillAmount = 0f; } if (previousStyleRank > rank) { rankFillImage.fillAmount = 1f; } ((Component)rankImage).GetComponent<Animator>().Play("RankAnimation"); ((Component)titleImage).GetComponent<Animator>().Play("TitleAnimation"); previousStyleRank = rank; } public static void UpdateStyleFill(float percent) { if (percent != rankFillImage.fillAmount && percent - rankFillImage.fillAmount > 0.1f) { ((Component)rankFillImage).GetComponent<FillBounce>().SetGoal(percent); } else { rankFillImage.fillAmount = percent; } } private static void AddTrickHistory(string text, Color32 color) { //IL_0040: 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) GameObject val = Object.Instantiate<GameObject>(DMCAssetManager.trickUIPanelPrefab, TrickHistory); ((TMP_Text)((Component)val.transform.Find("TrickText")).GetComponent<TextMeshProUGUI>()).text = text; ((Graphic)((Component)val.transform.Find("TrickText")).GetComponent<TextMeshProUGUI>()).color = Color32.op_Implicit(color); val.AddComponent<TrickFadout>(); } private static void CheckItemEaten(Item item, Character character) { if (character.IsLocal && Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { StyleTracker.localStyleTracker.ItemEaten(item); } } private static void CheckLuggageOpened(Luggage luggage, Character character) { if (character.IsLocal && Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { StyleTracker.localStyleTracker.LuggageOpened(luggage); } } private static void CheckItemThrown(Item item) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) lastThrownItem = item; lastThrownItemPos = ((Component)item).transform.position; } public static void CheckItemCaught(Item item, Character character) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && !((Object)(object)lastThrownItem != (Object)(object)item)) { StyleTracker.localStyleTracker.ItemCaught(item, character, lastThrownItemPos); } } } } namespace DevilMayClimb.Patch { public class PlayerPatch { [HarmonyPatch(typeof(Player), "Awake")] [HarmonyPostfix] public static void PlayerAwake(ref Player __instance) { if (!((Object)(object)__instance.view == (Object)null) && __instance.view.IsMine) { StyleManager.RegisterPlayer(__instance); } } [HarmonyPatch(typeof(Character), "Awake")] [HarmonyPostfix] public static void CharacterAwake(ref Character __instance) { if (__instance.IsLocal) { StyleManager.RegisterCharacter(__instance); } } [HarmonyPatch(typeof(CharacterAfflictions), "AddStatus")] [HarmonyPostfix] public static void CharacterAddStatus(ref CharacterAfflictions __instance, STATUSTYPE statusType, float amount, bool fromRPC) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (__instance.character.IsLocal && Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && amount > 0f && (int)statusType == 0) { StyleTracker.localStyleTracker.Fail(); } } [HarmonyPatch(typeof(CharacterMovement), "CheckFallDamage")] [HarmonyPostfix] public static void CharacterCheckFallDamage(ref CharacterMovement __instance) { if (__instance.character.IsLocal && Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && __instance.FallTime() <= __instance.fallDamageTime && __instance.FallTime() > __instance.fallDamageTime - 0.4f) { StyleTracker.localStyleTracker.CloseFall(); } } [HarmonyPatch(typeof(GUIManager), "Grasp")] [HarmonyPostfix] public static void GUIGrasp(ref GUIManager __instance) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { StyleTracker.localStyleTracker.Grasp(); } } [HarmonyPatch(typeof(CharacterMovement), "CheckForPalJump")] [HarmonyPrefix] public static void CharacterCheckFallDamage(ref CharacterMovement __instance, Character c) { if ((__instance.character.IsLocal || c.IsLocal) && Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && __instance.character.data.sinceStandOnPlayer < 0.3f && c.data.sinceJump < 0.3f) { if (__instance.character.IsLocal) { StyleTracker.localStyleTracker.FriendBoosted(); } else if (c.IsLocal) { StyleTracker.localStyleTracker.FriendBooster(); } } } [HarmonyPatch(typeof(Campfire), "Light_Rpc")] [HarmonyPostfix] public static void CampfireLight(ref Campfire __instance) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { StyleTracker.localStyleTracker.Campfire(); } } [HarmonyPatch(typeof(ItemCooking), "FinishCooking")] [HarmonyPostfix] public static void ItemFinishCooking(ref ItemCooking __instance) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && Object.op_Implicit((Object)(object)((ItemComponent)__instance).item.holderCharacter) && (Object)(object)((ItemComponent)__instance).item.holderCharacter == (Object)(object)Character.localCharacter) { StyleTracker.localStyleTracker.Cooked(__instance.timesCookedLocal); } } [HarmonyPatch(typeof(RespawnChest), "SpawnItems")] [HarmonyPrefix] public static void RespawnChestSpawnItems(ref RespawnChest __instance, List<Transform> spawnSpots) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { StyleTracker.localStyleTracker.RespawnChestActivated(); } } [HarmonyPatch(typeof(ScoutEffigy), "FinishConstruction")] [HarmonyPrefix] public static void EffigyFinish(ref ScoutEffigy __instance) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && !((Object)(object)((ItemComponent)__instance).item.holderCharacter != (Object)(object)Character.localCharacter)) { StyleTracker.localStyleTracker.EffigyActivated(); } } [HarmonyPatch(typeof(Character), "FeedItem")] [HarmonyPrefix] public static void CharacterFeed(ref Character __instance, Item item) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && !((Object)(object)item.holderCharacter != (Object)(object)Character.localCharacter)) { StyleTracker.localStyleTracker.FedItem(item); } } [HarmonyPatch(typeof(ThornOnMe), "Interact_CastFinished")] [HarmonyPostfix] public static void ThornInteract(ref ThornOnMe __instance, Character interactor) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && !((Object)(object)interactor != (Object)(object)Character.localCharacter)) { StyleTracker.localStyleTracker.RemovedThorn(); } } [HarmonyPatch(typeof(Scorpion), "InflictAttack")] [HarmonyPostfix] public static void ScorpionAttack(ref Scorpion __instance, Character character) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) && !((Object)(object)character != (Object)(object)Character.localCharacter)) { StyleTracker.localStyleTracker.ScorpionSting(); } } [HarmonyPatch(typeof(SlipperyJellyfish), "Trigger")] [HarmonyPostfix] public static void JellyfishSlip(ref SlipperyJellyfish __instance, int targetID) { if (Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { Character component = ((Component)PhotonView.Find(targetID)).GetComponent<Character>(); if (!((Object)(object)component == (Object)null) && !((Object)(object)component != (Object)(object)Character.localCharacter)) { StyleTracker.localStyleTracker.JellyfishSlip(); } } } [HarmonyPatch(typeof(TumbleWeed), "OnCollisionEnter")] [HarmonyPostfix] public static void TumbleWeedCollide(ref TumbleWeed __instance, Collision collision) { //IL_0041: 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_007b: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { return; } Character componentInParent = collision.gameObject.GetComponentInParent<Character>(); if (Object.op_Implicit((Object)(object)componentInParent) && componentInParent.IsLocal && !__instance.ignored.Contains(componentInParent)) { float num = ((Component)__instance).transform.localScale.x / __instance.originalScale; if (__instance.originalScale == 0f) { num = 1f; } num = Mathf.Clamp01(num); Vector3 linearVelocity = __instance.rig.linearVelocity; float num2 = Mathf.Clamp01(((Vector3)(ref linearVelocity)).magnitude * num * __instance.powerMultiplier); if (__instance.testFullPower) { num2 = 1f; } if (!(num2 < 0.2f)) { StyleTracker.localStyleTracker.Tumbleweed(); } } } [HarmonyPatch(typeof(Bonkable), "OnCollisionEnter")] [HarmonyPrefix] public static void BonkableCollide(ref Bonkable __instance, Collision coll) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker) || (int)__instance.item.itemState != 0 || !Object.op_Implicit((Object)(object)__instance.item.rig)) { return; } Vector3 relativeVelocity = coll.relativeVelocity; if (((Vector3)(ref relativeVelocity)).magnitude > __instance.minBonkVelocity) { Character componentInParent = coll.gameObject.GetComponentInParent<Character>(); if (Object.op_Implicit((Object)(object)componentInParent) && Time.time > __instance.lastBonkedTime + __instance.bonkCooldown) { StyleTracker.localStyleTracker.Bonk(__instance.item, componentInParent); } } } [HarmonyPatch(typeof(Lava), "Heat")] [HarmonyPrefix] public static void LavaHeat(ref Lava __instance) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)StyleTracker.localStyleTracker)) { return; } Character localCharacter = Character.localCharacter; if ((Object)(object)localCharacter == (Object)null) { return; } float num = __instance.counter + Time.deltaTime; if (!__instance.OutsideBounds(localCharacter.Center)) { float num2 = localCharacter.Center.y - ((Component)__instance).transform.position.y; float num3 = 1f - Mathf.Clamp01(num2 / __instance.height); if (!(num3 < 0.25f) && !(num < __instance.heatRate)) { StyleTracker.localStyleTracker.LavaHeat(num3 * 2f * __instance.heat * 1.5f); } } } } } namespace DevilMayClimb.Monobehavior { public class FillBounce : MonoBehaviour { private AnimationCurve fillCurve; private float fillDuration = 0.5f; private Image image; private float goalFill; private float currentFill; private float fillStart; public void Start() { //IL_0033: 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) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown image = ((Component)this).GetComponent<Image>(); Keyframe[] array = (Keyframe[])(object)new Keyframe[3] { new Keyframe(0f, 0f, 0f, 1.25f, 0f, 0f), default(Keyframe), default(Keyframe) }; ((Keyframe)(ref array[0])).weightedMode = (WeightedMode)0; array[1] = new Keyframe(0.8f, 1f, -0.5780662f, -0.5780662f, 0.09657286f, 0f); ((Keyframe)(ref array[1])).weightedMode = (WeightedMode)0; array[2] = new Keyframe(1f, 1f, 0f, 0f, 0f, 0f); ((Keyframe)(ref array[2])).weightedMode = (WeightedMode)0; fillCurve = new AnimationCurve(array); } public void SetGoal(float newGoal) { goalFill = newGoal; fillStart = Time.time; currentFill = image.fillAmount; } public void Update() { if (Time.time - fillStart <= fillDuration) { image.fillAmount = currentFill + fillCurve.Evaluate((Time.time - fillStart) / fillDuration) * (goalFill - currentFill); } } } public class StyleTracker : MonoBehaviour { public static StyleTracker localStyleTracker; public static float RANK_POINTS = 100f * Config.rankMult.Value; public static float MAX_STYLE = RANK_POINTS * 7f; private const float SLOW_DECAY = 0.025f; private const float FAST_DECAY = 0.05f; private const float TRICK_GRACE = 5f; private const float INTERNAL_TRICK_COOLDOWN = 0.1f; private const float MIN_CLIMB = 4f; private const float LONG_CLIMB = 100f; private Character? localCharacter; private Dictionary<string, float> trickRecordDict; private float stylePoints; private int styleRank; private float lastTrickTime; private float lastUpsidedown; private int comboCounter = 1; private bool activeCombo; private Vector3 climbStartPos = Vector3.zero; private Vector3 climbLastPos = Vector3.zero; private Vector3 climbLastNormal = Vector3.zero; private bool canTransfer; private bool wallSliding; private float wallSlideStart; private bool ropeClimbing; private bool vineClimbing; private bool vineGrinding; private bool cannonLaunched; private float lastGrasp; private float lavaHeatCounter; private bool passedOut; private float passedOutTime; private float passedOutPoints; public void Awake() { trickRecordDict = new Dictionary<string, float>(); localStyleTracker = this; localCharacter = ((Component)this).GetComponent<Character>(); AttachEvents(); } private void AttachEvents() { if (Object.op_Implicit((Object)(object)localCharacter)) { Character? obj = localCharacter; obj.startClimbAction = (Action)Delegate.Combine(obj.startClimbAction, (Action)delegate { SetClimbStart(); }); } } private List<StyleMod> GetActiveModifiers() { List<StyleMod> list = new List<StyleMod>(); if (!Object.op_Implicit((Object)(object)localCharacter)) { return list; } if (localCharacter.GetMaxStamina() <= 0.1f) { list.Add(new StyleMod("Death's Door", 1f)); } if (localCharacter.data.extraStamina >= 1f) { list.Add(new StyleMod("Happy", 0.25f)); } Affliction val = default(Affliction); if (localCharacter.refs.afflictions.HasAfflictionType((AfflictionType)1, ref val)) { list.Add(new StyleMod("Sugar Rush", 0.25f)); } if (localCharacter.refs.afflictions.HasAfflictionType((AfflictionType)2, ref val)) { list.Add(new StyleMod("Energized", 0.25f)); } if (localCharacter.refs.balloons.currentBalloonCount > 0) { list.Add(new StyleMod("Air Head", -0.75f)); } if (Object.op_Implicit((Object)(object)localCharacter.data.carriedPlayer)) { list.Add(new StyleMod("Supportive", 1f)); } if (Object.op_Implicit((Object)(object)localCharacter.data.currentItem)) { if (((Object)localCharacter.data.currentItem).name.Contains("BingBong", StringComparison.CurrentCultureIgnoreCase)) { list.Add(new StyleMod("Bing Bong", 0.5f)); } if (((Object)localCharacter.data.currentItem).name.Contains("Bugle", StringComparison.CurrentCultureIgnoreCase)) { list.Add(new StyleMod("Melodic", 0.5f)); } if (((Object)localCharacter.data.currentItem).name.Contains("Parasol", StringComparison.CurrentCultureIgnoreCase)) { list.Add(new StyleMod("Lightweight", -0.75f)); } } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)1) >= 0.3f) { list.Add(new StyleMod("Ravenous", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)7) >= 0.3f) { list.Add(new StyleMod("Loaded", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)8) >= 0.3f) { list.Add(new StyleMod("Blazing", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)2) >= 0.3f) { list.Add(new StyleMod("Chill", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)9) >= 0.3f) { list.Add(new StyleMod("Spiked", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)6) >= 0.3f) { list.Add(new StyleMod("Dreamy", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)3) >= 0.3f) { list.Add(new StyleMod("Toxic", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)0) >= 0.3f) { list.Add(new StyleMod("Busted", 0.25f)); } if (localCharacter.refs.afflictions.GetCurrentStatus((STATUSTYPE)5) >= 0.3f) { list.Add(new StyleMod("Wicked", 0.5f)); } if (localCharacter.data.slippy > 0f) { list.Add(new StyleMod("Slippery", 0.25f)); } return list; } private void SendStyleAction(string action, int points) { if (localCharacter.data.passedOut || localCharacter.data.fullyPassedOut || localCharacter.data.dead || (trickRecordDict.TryGetValue(action, out var value) && Time.time - value < 0.1f)) { return; } int num = points; float num2 = 1f; string text = action; foreach (StyleMod activeModifier in GetActiveModifiers()) { num2 += activeModifier.Modifier; text = activeModifier.Descriptor + " " + text; } if (points > 0) { if (Time.time - lastTrickTime <= 5f) { if (Config.comboScaling.Value) { comboCounter++; num2 += 0.1f * (float)comboCounter; } else { num2 += 0.25f; } activeCombo = true; } else if (comboCounter != 1) { comboCounter = 1; } num = Mathf.RoundToInt((float)points * num2); lastTrickTime = Time.time; } else { DropCombo(); } stylePoints += num; StyleManager.ApplyStyleAction(text, num, Time.time, comboCounter); trickRecordDict[action] = Time.time; } public void FixedUpdate() { if (Object.op_Implicit((Object)(object)localCharacter)) { CheckCannon(); CheckPassedOut(); CheckClimbing(); CheckForFlips(); UpdateStyle(); } } private void CheckCannon() { if (localCharacter.data.launchedByCannon && !cannonLaunched) { cannonLaunched = true; SendStyleAction("Cannonball", 70); } else if (!localCharacter.data.launchedByCannon && cannonLaunched) { cannonLaunched = false; } } private void CheckPassedOut() { if ((localCharacter.refs.afflictions.statusSum >= 1f || localCharacter.data.passedOut) && !passedOut) { passedOutTime = Time.time; StyleManager.ApplyWipeout(Mathf.RoundToInt(stylePoints)); passedOutPoints = stylePoints; stylePoints = 0f; DropCombo(); passedOut = true; } else if (localCharacter.refs.afflictions.statusSum < 1f && !localCharacter.data.passedOut && passedOut) { if (Time.time - passedOutTime < 5f) { stylePoints = passedOutPoints + 100f * Config.rankMult.Value; StyleManager.ApplyStyleAction("Close Call", Mathf.RoundToInt(passedOutPoints + 100f * Config.rankMult.Value), Time.time, 1); } passedOut = false; } } private void CheckClimbing() { //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) if (localCharacter.data.isGrounded && canTransfer) { canTransfer = false; } if (localCharacter.data.isClimbing && !localCharacter.IsSliding()) { if (localCharacter.refs.climbing.playerSlide.y < 0f) { if (!wallSliding) { wallSliding = true; wallSlideStart = Time.time; } } else if (wallSliding) { wallSliding = false; if (Time.time - wallSlideStart >= 0.4f) { SendStyleAction("Slide", 40); } SetClimbStart(); } else { EvalClimbDistance(1f); } } else if (wallSliding) { wallSliding = false; } if (localCharacter.data.isRopeClimbing) { if (!ropeClimbing) { ropeClimbing = true; SetClimbStart(); } else { EvalClimbDistance(4f); } } else if (ropeClimbing) { ropeClimbing = false; } if (localCharacter.data.isVineClimbing) { if (!vineClimbing) { vineClimbing = true; SetClimbStart(); } else if (localCharacter.refs.vineClimbing.Sliding()) { if (!vineGrinding) { vineGrinding = true; } if (Vector3.SqrMagnitude(localCharacter.TorsoPos() - climbLastPos) >= 16f) { SendStyleAction("Grind", 40); climbLastPos = localCharacter.TorsoPos(); } } else if (vineGrinding && !localCharacter.refs.vineClimbing.Sliding()) { vineGrinding = false; SetClimbStart(); } else { EvalClimbDistance(4f); } } else if (vineClimbing) { vineClimbing = false; if (vineGrinding) { vineGrinding = false; } } } private void CheckForFlips() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) if (Vector3.Angle(((Component)localCharacter.GetBodypart((BodypartType)0)).transform.up, Vector3.down) < 20f) { lastUpsidedown = Time.time; } else if (Time.time - lastUpsidedown <= 5f && Vector3.Angle(((Component)localCharacter.GetBodypart((BodypartType)0)).transform.up, Vector3.up) < 20f) { SendStyleAction("Flip", 40); lastUpsidedown = 0f; } } public void ItemEaten(Item item) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)item).GetComponent<Action_RestoreHunger>()) || Object.op_Implicit((Object)(object)((Component)item).GetComponent<Action_GiveExtraStamina>())) { if (((Enum)item.itemTags).HasFlag((Enum)(object)(ItemTags)32) && item.GetData<IntItemData>((DataEntryKey)1).Value >= 1) { SendStyleAction("Gourmand", 15); } else if (item.GetData<IntItemData>((DataEntryKey)1).Value == 1) { SendStyleAction("Meal", 10); } else { SendStyleAction("Quaff", 5); } } } public void FedItem(Item item) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)item).GetComponent<Action_RestoreHunger>()) || Object.op_Implicit((Object)(object)((Component)item).GetComponent<Action_GiveExtraStamina>())) { SendStyleAction("Waiter", 15); } else if (Object.op_Implicit((Object)(object)((Component)item).GetComponent<Action_ModifyStatus>())) { Action_ModifyStatus component = ((Component)item).GetComponent<Action_ModifyStatus>(); if (component.changeAmount < 0f && ((int)component.statusType == 3 || (int)component.statusType == 0)) { SendStyleAction("Medic", 25); } } } public void LuggageOpened(Luggage luggage) { if (!(luggage is RespawnChest)) { if (luggage is LuggageCursed) { SendStyleAction("Risky Plunder", Mathf.RoundToInt(100f * Config.rankMult.Value)); } else { SendStyleAction("Plunder", 10); } } } private void SetClimbStart() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) climbStartPos = localCharacter.TorsoPos(); climbLastPos = climbStartPos; if (localCharacter.data.isClimbing) { if (canTransfer && Vector3.Angle(localCharacter.data.climbNormal, climbLastNormal) >= 80f) { canTransfer = false; SendStyleAction("Wall Transfer", 25); } canTransfer = true; climbLastNormal = localCharacter.data.climbNormal; } else if (canTransfer) { canTransfer = false; } } private void EvalClimbDistance(float distMultSq) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) if (Vector3.SqrMagnitude(localCharacter.TorsoPos() - climbLastPos) >= 4f * distMultSq) { if (Vector3.SqrMagnitude(localCharacter.TorsoPos() - climbStartPos) < 100f * distMultSq) { SendStyleAction("Climb", 10); } else { SendStyleAction("Long Climb", 20); } climbLastPos = localCharacter.TorsoPos(); if (localCharacter.data.isClimbing) { climbLastNormal = localCharacter.data.climbNormal; } } } public void Fail() { Affliction val = default(Affliction); if (!localCharacter.refs.afflictions.HasAfflictionType((AfflictionType)14, ref val)) { stylePoints -= 100f * Config.rankMult.Value; StyleManager.ApplyFailure(); DropCombo(); } } public void CloseFall() { SendStyleAction("Risky Landing", 25); } public void Grasp() { if (Time.time - lastGrasp >= 2.5f) { SendStyleAction("Helping Hand", 20); lastGrasp = Time.time; } } public void Campfire() { SendStyleAction("Campfire", 50); } public void RemovedThorn() { SendStyleAction("Medic", 10); } public void Cooked(int timesCooked) { if (timesCooked == 1) { SendStyleAction("Chef", 10); } if (timesCooked == 2) { SendStyleAction("Overcooked", 5); } if (timesCooked >= 3) { SendStyleAction("Fire Hazard", -10); } } public void RespawnChestActivated() { if (Ascents.canReviveDead && Character.PlayerIsDeadOrDown()) { SendStyleAction("Rule 0", 50); } else { SendStyleAction("Perfect Ascent", 70); } } public void EffigyActivated() { SendStyleAction("Rule 0", 50); } public void FriendBoosted() { SendStyleAction("Boost Jump", 40); } public void FriendBooster() { SendStyleAction("Friend Boost", 30); } public void ScorpionSting() { SendStyleAction("Stinger", -50); } public void JellyfishSlip() { SendStyleAction("Slip", -25); } public void Tumbleweed() { SendStyleAction("Tumbled", -25); } public void LavaHeat(float heatAmount) { lavaHeatCounter += heatAmount; if (lavaHeatCounter > 0.12f) { lavaHeatCounter = 0f; SendStyleAction("Hot Feet", 25); } } public void Bonk(Item item, Character character) { if (Object.op_Implicit((Object)(object)item.lastThrownCharacter) && (Object)(object)item.lastThrownCharacter == (Object)(object)localCharacter) { SendStyleAction("Bonk", 25); } if ((Object)(object)character == (Object)(object)localCharacter) { SendStyleAction("Bonked", -25); } } public void ItemCaught(Item item, Character character, Vector3 thrownPos) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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) if (!(Time.time - item.lastThrownTime >= 0.5f) || !Object.op_Implicit((Object)(object)((Component)item).GetComponent<Rigidbody>())) { return; } Vector3 val = ((Component)item).GetComponent<Rigidbody>().linearVelocity; if (!(((Vector3)(ref val)).sqrMagnitude > 9f)) { return; } val = ((Component)item).transform.position - thrownPos; float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; float num = 100f; if ((Object)(object)character == (Object)(object)localCharacter) { if (sqrMagnitude >= num) { SendStyleAction("Long Catch", 40); } else { SendStyleAction("Catch", 25); } } } private void DropCombo() { if (activeCombo) { activeCombo = false; comboCounter = 1; lastTrickTime = 0f; StyleManager.DropCombo(); } } private void UpdateStyle() { if (stylePoints > MAX_STYLE) { stylePoints = MAX_STYLE; } float num = Time.time - lastTrickTime; if (num > 5f) { float num2 = 0.05f; if (localCharacter.data.isSprinting || localCharacter.data.isJumping || !localCharacter.data.isGrounded) { num2 = 0.025f; } if (styleRank == 4) { num2 *= 2f; } if (styleRank == 5) { num2 *= 2.5f; } if (styleRank == 6) { num2 *= 3f; } num2 *= Config.decayMult.Value; stylePoints -= num2; DropCombo(); } if (stylePoints < 0f) { stylePoints = 0f; } int num3 = Mathf.FloorToInt(stylePoints / (100f * Config.rankMult.Value)); if (num3 < 0) { num3 = 0; } if (num3 > 6) { num3 = 6; } if (num3 != styleRank) { StyleManager.UpdateStyleRank(num3); styleRank = num3; } StyleManager.UpdateStyleFill(stylePoints / (100f * Config.rankMult.Value) - (float)styleRank); } } public class TrickFadout : MonoBehaviour { public float lifeTime = 5f; public float fadoutTime = 1f; public void Update() { lifeTime -= Time.deltaTime; if (lifeTime <= 0f) { if (lifeTime <= 0f - fadoutTime) { Object.Destroy((Object)(object)((Component)this).gameObject); } else { ((Component)this).GetComponent<CanvasGroup>().alpha = Mathf.Lerp(1f, 0f, MathF.Abs(lifeTime) / fadoutTime); } } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }