Decompiled source of AetheriumKR v1.0.1
Aetherium.dll
Decompiled 8 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using Aetherium.Achievements; using Aetherium.Artifacts; using Aetherium.Compatability; using Aetherium.CoreModules; using Aetherium.Effect; using Aetherium.Equipment; using Aetherium.Equipment.EliteEquipment; using Aetherium.Interactables; using Aetherium.Items; using Aetherium.Items.Tier3; using Aetherium.MyEntityStates; using Aetherium.MyEntityStates.BellTotem; using Aetherium.MyEntityStates.BuffBrazier; using Aetherium.MyEntityStates.Faust; using Aetherium.MyEntityStates.Survivors.Koalesk; using Aetherium.StandaloneBuffs; using Aetherium.StandaloneBuffs.Tier2; using Aetherium.Survivors; using Aetherium.Utils; using Aetherium.Utils.Components; using Aetherium.Utils.Easings; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using BetterUI; using EntityStates; using EntityStates.BrotherMonster; using EntityStates.ClayBoss; using EntityStates.Engi.EngiWeapon; using EntityStates.ImpMonster; using HG.BlendableTypes; using HarmonyLib; using IL.EntityStates.Merc; using IL.EntityStates.Treebot.TreebotFlower; using IL.RoR2; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using On.RoR2; using On.RoR2.CharacterAI; using On.RoR2.Items; using On.RoR2.Orbs; using On.RoR2.Projectile; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.CharacterSpeech; using RoR2.ExpansionManagement; using RoR2.Hologram; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyCompany("Aetherium")] [assembly: AssemblyProduct("Aetherium")] [assembly: AssemblyTitle("Aetherium")] [assembly: AssemblyInformationalVersion("1.0.0+ed7d5fe26a739e1860e02fe77fdc193e2170b577")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [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 { [Microsoft.CodeAnalysis.Embedded] [CompilerGenerated] internal sealed class IsReadOnlyAttribute : Attribute { } } public static class EasingFunction { public enum Ease { EaseInQuad, EaseOutQuad, EaseInOutQuad, EaseInCubic, EaseOutCubic, EaseInOutCubic, EaseInQuart, EaseOutQuart, EaseInOutQuart, EaseInQuint, EaseOutQuint, EaseInOutQuint, EaseInSine, EaseOutSine, EaseInOutSine, EaseInExpo, EaseOutExpo, EaseInOutExpo, EaseInCirc, EaseOutCirc, EaseInOutCirc, Linear, Spring, EaseInBounce, EaseOutBounce, EaseInOutBounce, EaseInBack, EaseOutBack, EaseInOutBack, EaseInElastic, EaseOutElastic, EaseInOutElastic } public delegate float Function(float s, float e, float v); private const float NATURAL_LOG_OF_2 = 0.6931472f; public static float Linear(float start, float end, float value) { return Mathf.Lerp(start, end, value); } public static float Spring(float start, float end, float value) { value = Mathf.Clamp01(value); value = (Mathf.Sin(value * MathF.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) * (1f + 1.2f * (1f - value)); return start + (end - start) * value; } public static float EaseInQuad(float start, float end, float value) { end -= start; return end * value * value + start; } public static float EaseOutQuad(float start, float end, float value) { end -= start; return (0f - end) * value * (value - 2f) + start; } public static float EaseInOutQuad(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * 0.5f * value * value + start; } value -= 1f; return (0f - end) * 0.5f * (value * (value - 2f) - 1f) + start; } public static float EaseInCubic(float start, float end, float value) { end -= start; return end * value * value * value + start; } public static float EaseOutCubic(float start, float end, float value) { value -= 1f; end -= start; return end * (value * value * value + 1f) + start; } public static float EaseInOutCubic(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * 0.5f * value * value * value + start; } value -= 2f; return end * 0.5f * (value * value * value + 2f) + start; } public static float EaseInQuart(float start, float end, float value) { end -= start; return end * value * value * value * value + start; } public static float EaseOutQuart(float start, float end, float value) { value -= 1f; end -= start; return (0f - end) * (value * value * value * value - 1f) + start; } public static float EaseInOutQuart(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * 0.5f * value * value * value * value + start; } value -= 2f; return (0f - end) * 0.5f * (value * value * value * value - 2f) + start; } public static float EaseInQuint(float start, float end, float value) { end -= start; return end * value * value * value * value * value + start; } public static float EaseOutQuint(float start, float end, float value) { value -= 1f; end -= start; return end * (value * value * value * value * value + 1f) + start; } public static float EaseInOutQuint(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * 0.5f * value * value * value * value * value + start; } value -= 2f; return end * 0.5f * (value * value * value * value * value + 2f) + start; } public static float EaseInSine(float start, float end, float value) { end -= start; return (0f - end) * Mathf.Cos(value * (MathF.PI / 2f)) + end + start; } public static float EaseOutSine(float start, float end, float value) { end -= start; return end * Mathf.Sin(value * (MathF.PI / 2f)) + start; } public static float EaseInOutSine(float start, float end, float value) { end -= start; return (0f - end) * 0.5f * (Mathf.Cos(MathF.PI * value) - 1f) + start; } public static float EaseInExpo(float start, float end, float value) { end -= start; return end * Mathf.Pow(2f, 10f * (value - 1f)) + start; } public static float EaseOutExpo(float start, float end, float value) { end -= start; return end * (0f - Mathf.Pow(2f, -10f * value) + 1f) + start; } public static float EaseInOutExpo(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * 0.5f * Mathf.Pow(2f, 10f * (value - 1f)) + start; } value -= 1f; return end * 0.5f * (0f - Mathf.Pow(2f, -10f * value) + 2f) + start; } public static float EaseInCirc(float start, float end, float value) { end -= start; return (0f - end) * (Mathf.Sqrt(1f - value * value) - 1f) + start; } public static float EaseOutCirc(float start, float end, float value) { value -= 1f; end -= start; return end * Mathf.Sqrt(1f - value * value) + start; } public static float EaseInOutCirc(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return (0f - end) * 0.5f * (Mathf.Sqrt(1f - value * value) - 1f) + start; } value -= 2f; return end * 0.5f * (Mathf.Sqrt(1f - value * value) + 1f) + start; } public static float EaseInBounce(float start, float end, float value) { end -= start; float num = 1f; return end - EaseOutBounce(0f, end, num - value) + start; } public static float EaseOutBounce(float start, float end, float value) { value /= 1f; end -= start; if (value < 0.36363637f) { return end * (7.5625f * value * value) + start; } if (value < 0.72727275f) { value -= 0.54545456f; return end * (7.5625f * value * value + 0.75f) + start; } if ((double)value < 0.9090909090909091) { value -= 0.8181818f; return end * (7.5625f * value * value + 0.9375f) + start; } value -= 21f / 22f; return end * (7.5625f * value * value + 63f / 64f) + start; } public static float EaseInOutBounce(float start, float end, float value) { end -= start; float num = 1f; if (value < num * 0.5f) { return EaseInBounce(0f, end, value * 2f) * 0.5f + start; } return EaseOutBounce(0f, end, value * 2f - num) * 0.5f + end * 0.5f + start; } public static float EaseInBack(float start, float end, float value) { end -= start; value /= 1f; float num = 1.70158f; return end * value * value * ((num + 1f) * value - num) + start; } public static float EaseOutBack(float start, float end, float value) { float num = 1.70158f; end -= start; value -= 1f; return end * (value * value * ((num + 1f) * value + num) + 1f) + start; } public static float EaseInOutBack(float start, float end, float value) { float num = 1.70158f; end -= start; value /= 0.5f; if (value < 1f) { num *= 1.525f; return end * 0.5f * (value * value * ((num + 1f) * value - num)) + start; } value -= 2f; num *= 1.525f; return end * 0.5f * (value * value * ((num + 1f) * value + num) + 2f) + start; } public static float EaseInElastic(float start, float end, float value) { end -= start; float num = 1f; float num2 = num * 0.3f; float num3 = 0f; if (value == 0f) { return start; } if ((value /= num) == 1f) { return start + end; } float num4; if (num3 == 0f || num3 < Mathf.Abs(end)) { num3 = end; num4 = num2 / 4f; } else { num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3); } return 0f - num3 * Mathf.Pow(2f, 10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) + start; } public static float EaseOutElastic(float start, float end, float value) { end -= start; float num = 1f; float num2 = num * 0.3f; float num3 = 0f; if (value == 0f) { return start; } if ((value /= num) == 1f) { return start + end; } float num4; if (num3 == 0f || num3 < Mathf.Abs(end)) { num3 = end; num4 = num2 * 0.25f; } else { num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3); } return num3 * Mathf.Pow(2f, -10f * value) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) + end + start; } public static float EaseInOutElastic(float start, float end, float value) { end -= start; float num = 1f; float num2 = num * 0.3f; float num3 = 0f; if (value == 0f) { return start; } if ((value /= num * 0.5f) == 2f) { return start + end; } float num4; if (num3 == 0f || num3 < Mathf.Abs(end)) { num3 = end; num4 = num2 / 4f; } else { num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3); } if (value < 1f) { return -0.5f * (num3 * Mathf.Pow(2f, 10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2)) + start; } return num3 * Mathf.Pow(2f, -10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) * 0.5f + end + start; } public static float LinearD(float start, float end, float value) { return end - start; } public static float EaseInQuadD(float start, float end, float value) { return 2f * (end - start) * value; } public static float EaseOutQuadD(float start, float end, float value) { end -= start; return (0f - end) * value - end * (value - 2f); } public static float EaseInOutQuadD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * value; } value -= 1f; return end * (1f - value); } public static float EaseInCubicD(float start, float end, float value) { return 3f * (end - start) * value * value; } public static float EaseOutCubicD(float start, float end, float value) { value -= 1f; end -= start; return 3f * end * value * value; } public static float EaseInOutCubicD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return 1.5f * end * value * value; } value -= 2f; return 1.5f * end * value * value; } public static float EaseInQuartD(float start, float end, float value) { return 4f * (end - start) * value * value * value; } public static float EaseOutQuartD(float start, float end, float value) { value -= 1f; end -= start; return -4f * end * value * value * value; } public static float EaseInOutQuartD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return 2f * end * value * value * value; } value -= 2f; return -2f * end * value * value * value; } public static float EaseInQuintD(float start, float end, float value) { return 5f * (end - start) * value * value * value * value; } public static float EaseOutQuintD(float start, float end, float value) { value -= 1f; end -= start; return 5f * end * value * value * value * value; } public static float EaseInOutQuintD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return 2.5f * end * value * value * value * value; } value -= 2f; return 2.5f * end * value * value * value * value; } public static float EaseInSineD(float start, float end, float value) { return (end - start) * 0.5f * MathF.PI * Mathf.Sin(MathF.PI / 2f * value); } public static float EaseOutSineD(float start, float end, float value) { end -= start; return MathF.PI / 2f * end * Mathf.Cos(value * (MathF.PI / 2f)); } public static float EaseInOutSineD(float start, float end, float value) { end -= start; return end * 0.5f * MathF.PI * Mathf.Sin(MathF.PI * value); } public static float EaseInExpoD(float start, float end, float value) { return 6.931472f * (end - start) * Mathf.Pow(2f, 10f * (value - 1f)); } public static float EaseOutExpoD(float start, float end, float value) { end -= start; return 3.465736f * end * Mathf.Pow(2f, 1f - 10f * value); } public static float EaseInOutExpoD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return 3.465736f * end * Mathf.Pow(2f, 10f * (value - 1f)); } value -= 1f; return 3.465736f * end / Mathf.Pow(2f, 10f * value); } public static float EaseInCircD(float start, float end, float value) { return (end - start) * value / Mathf.Sqrt(1f - value * value); } public static float EaseOutCircD(float start, float end, float value) { value -= 1f; end -= start; return (0f - end) * value / Mathf.Sqrt(1f - value * value); } public static float EaseInOutCircD(float start, float end, float value) { value /= 0.5f; end -= start; if (value < 1f) { return end * value / (2f * Mathf.Sqrt(1f - value * value)); } value -= 2f; return (0f - end) * value / (2f * Mathf.Sqrt(1f - value * value)); } public static float EaseInBounceD(float start, float end, float value) { end -= start; float num = 1f; return EaseOutBounceD(0f, end, num - value); } public static float EaseOutBounceD(float start, float end, float value) { value /= 1f; end -= start; if (value < 0.36363637f) { return 2f * end * 7.5625f * value; } if (value < 0.72727275f) { value -= 0.54545456f; return 2f * end * 7.5625f * value; } if ((double)value < 0.9090909090909091) { value -= 0.8181818f; return 2f * end * 7.5625f * value; } value -= 21f / 22f; return 2f * end * 7.5625f * value; } public static float EaseInOutBounceD(float start, float end, float value) { end -= start; float num = 1f; if (value < num * 0.5f) { return EaseInBounceD(0f, end, value * 2f) * 0.5f; } return EaseOutBounceD(0f, end, value * 2f - num) * 0.5f; } public static float EaseInBackD(float start, float end, float value) { float num = 1.70158f; return 3f * (num + 1f) * (end - start) * value * value - 2f * num * (end - start) * value; } public static float EaseOutBackD(float start, float end, float value) { float num = 1.70158f; end -= start; value -= 1f; return end * ((num + 1f) * value * value + 2f * value * ((num + 1f) * value + num)); } public static float EaseInOutBackD(float start, float end, float value) { float num = 1.70158f; end -= start; value /= 0.5f; if (value < 1f) { num *= 1.525f; return 0.5f * end * (num + 1f) * value * value + end * value * ((num + 1f) * value - num); } value -= 2f; num *= 1.525f; return 0.5f * end * ((num + 1f) * value * value + 2f * value * ((num + 1f) * value + num)); } public static float EaseInElasticD(float start, float end, float value) { return EaseOutElasticD(start, end, 1f - value); } public static float EaseOutElasticD(float start, float end, float value) { end -= start; float num = 1f; float num2 = num * 0.3f; float num3 = 0f; float num4; if (num3 == 0f || num3 < Mathf.Abs(end)) { num3 = end; num4 = num2 * 0.25f; } else { num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3); } return num3 * MathF.PI * num * Mathf.Pow(2f, 1f - 10f * value) * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / num2 - 3.465736f * num3 * Mathf.Pow(2f, 1f - 10f * value) * Mathf.Sin(MathF.PI * 2f * (num * value - num4) / num2); } public static float EaseInOutElasticD(float start, float end, float value) { end -= start; float num = 1f; float num2 = num * 0.3f; float num3 = 0f; float num4; if (num3 == 0f || num3 < Mathf.Abs(end)) { num3 = end; num4 = num2 / 4f; } else { num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3); } if (value < 1f) { value -= 1f; return -3.465736f * num3 * Mathf.Pow(2f, 10f * value) * Mathf.Sin(MathF.PI * 2f * (num * value - 2f) / num2) - num3 * MathF.PI * num * Mathf.Pow(2f, 10f * value) * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / num2; } value -= 1f; return num3 * MathF.PI * num * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / (num2 * Mathf.Pow(2f, 10f * value)) - 3.465736f * num3 * Mathf.Sin(MathF.PI * 2f * (num * value - num4) / num2) / Mathf.Pow(2f, 10f * value); } public static float SpringD(float start, float end, float value) { value = Mathf.Clamp01(value); end -= start; return end * (6f * (1f - value) / 5f + 1f) * (-2.2f * Mathf.Pow(1f - value, 1.2f) * Mathf.Sin(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + Mathf.Pow(1f - value, 2.2f) * (MathF.PI * (2.5f * value * value * value + 0.2f) + 23.561945f * value * value * value) * Mathf.Cos(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + 1f) - 6f * end * (Mathf.Pow(1f - value, 2.2f) * Mathf.Sin(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + value / 5f); } public static Function GetEasingFunction(Ease easingFunction) { return easingFunction switch { Ease.EaseInQuad => EaseInQuad, Ease.EaseOutQuad => EaseOutQuad, Ease.EaseInOutQuad => EaseInOutQuad, Ease.EaseInCubic => EaseInCubic, Ease.EaseOutCubic => EaseOutCubic, Ease.EaseInOutCubic => EaseInOutCubic, Ease.EaseInQuart => EaseInQuart, Ease.EaseOutQuart => EaseOutQuart, Ease.EaseInOutQuart => EaseInOutQuart, Ease.EaseInQuint => EaseInQuint, Ease.EaseOutQuint => EaseOutQuint, Ease.EaseInOutQuint => EaseInOutQuint, Ease.EaseInSine => EaseInSine, Ease.EaseOutSine => EaseOutSine, Ease.EaseInOutSine => EaseInOutSine, Ease.EaseInExpo => EaseInExpo, Ease.EaseOutExpo => EaseOutExpo, Ease.EaseInOutExpo => EaseInOutExpo, Ease.EaseInCirc => EaseInCirc, Ease.EaseOutCirc => EaseOutCirc, Ease.EaseInOutCirc => EaseInOutCirc, Ease.Linear => Linear, Ease.Spring => Spring, Ease.EaseInBounce => EaseInBounce, Ease.EaseOutBounce => EaseOutBounce, Ease.EaseInOutBounce => EaseInOutBounce, Ease.EaseInBack => EaseInBack, Ease.EaseOutBack => EaseOutBack, Ease.EaseInOutBack => EaseInOutBack, Ease.EaseInElastic => EaseInElastic, Ease.EaseOutElastic => EaseOutElastic, Ease.EaseInOutElastic => EaseInOutElastic, _ => null, }; } public static Function GetEasingFunctionDerivative(Ease easingFunction) { return easingFunction switch { Ease.EaseInQuad => EaseInQuadD, Ease.EaseOutQuad => EaseOutQuadD, Ease.EaseInOutQuad => EaseInOutQuadD, Ease.EaseInCubic => EaseInCubicD, Ease.EaseOutCubic => EaseOutCubicD, Ease.EaseInOutCubic => EaseInOutCubicD, Ease.EaseInQuart => EaseInQuartD, Ease.EaseOutQuart => EaseOutQuartD, Ease.EaseInOutQuart => EaseInOutQuartD, Ease.EaseInQuint => EaseInQuintD, Ease.EaseOutQuint => EaseOutQuintD, Ease.EaseInOutQuint => EaseInOutQuintD, Ease.EaseInSine => EaseInSineD, Ease.EaseOutSine => EaseOutSineD, Ease.EaseInOutSine => EaseInOutSineD, Ease.EaseInExpo => EaseInExpoD, Ease.EaseOutExpo => EaseOutExpoD, Ease.EaseInOutExpo => EaseInOutExpoD, Ease.EaseInCirc => EaseInCircD, Ease.EaseOutCirc => EaseOutCircD, Ease.EaseInOutCirc => EaseInOutCircD, Ease.Linear => LinearD, Ease.Spring => SpringD, Ease.EaseInBounce => EaseInBounceD, Ease.EaseOutBounce => EaseOutBounceD, Ease.EaseInOutBounce => EaseInOutBounceD, Ease.EaseInBack => EaseInBackD, Ease.EaseOutBack => EaseOutBackD, Ease.EaseInOutBack => EaseInOutBackD, Ease.EaseInElastic => EaseInElasticD, Ease.EaseOutElastic => EaseOutElasticD, Ease.EaseInOutElastic => EaseInOutElasticD, _ => null, }; } } public class BellRingingEffect : NetworkBehaviour { public CharacterBody Attacker; public float Radius; public ParticleSystem BellParticleSystem; public void Start() { BellParticleSystem = ((Component)this).GetComponentInChildren<ParticleSystem>(); } public void RingBell() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) BellParticleSystem.Play(); if (NetworkServer.active) { GameObject gameObject = ((Component)((Component)this).gameObject.transform.Find("EffectArea")).gameObject; EntitySoundManager.EmitSoundServer(AkEventIdArg.op_Implicit(BellTotem.BellRingingSound.akId), ((Component)this).gameObject); EffectData val = new EffectData { origin = gameObject.transform.position, rotation = gameObject.transform.rotation, scale = BellTotem.RadiusOfBellRinging }; EffectManager.SpawnEffect(BellTotem.BellSoundwaveEffect, val, true); new BlastAttack { attacker = ((Component)Attacker).gameObject, position = gameObject.transform.position, damageType = (DamageType)32, baseForce = BellTotem.ForceOfBellRinging, radius = BellTotem.RadiusOfBellRinging, inflictor = gameObject, teamIndex = Attacker.teamComponent.teamIndex }.Fire(); } } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } public class BellTotemDisappearEffect : NetworkBehaviour { public void PlayImpactEffect() { //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_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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: Expected O, but got Unknown if (NetworkServer.active) { EffectData val = new EffectData { origin = ((Component)this).gameObject.transform.Find("Base").position, rotation = ((Component)this).gameObject.transform.rotation }; EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impactEffects/SpawnLemurian"), val, true); } } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } public class ChildLocatorCustom : MonoBehaviour { [Serializable] public struct NameTransformPair { public string name; public Transform transform; } [SerializeField] public NameTransformPair[] transformPairs; } [AddComponentMenu("Dynamic Bone/Dynamic Bone")] public class DynamicBone : MonoBehaviour { public enum UpdateMode { Normal, AnimatePhysics, UnscaledTime } public enum FreezeAxis { None, X, Y, Z } private class Particle { public Transform m_Transform; public int m_ParentIndex = -1; public float m_Damping; public float m_Elasticity; public float m_Stiffness; public float m_Inert; public float m_Radius; public float m_BoneLength; public Vector3 m_Position = Vector3.zero; public Vector3 m_PrevPosition = Vector3.zero; public Vector3 m_EndOffset = Vector3.zero; public Vector3 m_InitLocalPosition = Vector3.zero; public Quaternion m_InitLocalRotation = Quaternion.identity; } public Transform m_Root; public float m_UpdateRate = 60f; public UpdateMode m_UpdateMode; [Range(0f, 1f)] public float m_Damping = 0.1f; public AnimationCurve m_DampingDistrib; [Range(0f, 1f)] public float m_Elasticity = 0.1f; public AnimationCurve m_ElasticityDistrib; [Range(0f, 1f)] public float m_Stiffness = 0.1f; public AnimationCurve m_StiffnessDistrib; [Range(0f, 1f)] public float m_Inert; public AnimationCurve m_InertDistrib; public float m_Radius; public AnimationCurve m_RadiusDistrib; public float m_EndLength; public Vector3 m_EndOffset = Vector3.zero; public Vector3 m_Gravity = Vector3.zero; public Vector3 m_Force = Vector3.zero; public List<DynamicBoneCollider> m_Colliders; public List<Transform> m_Exclusions; public FreezeAxis m_FreezeAxis; public bool m_DistantDisable; public Transform m_ReferenceObject; public float m_DistanceToObject = 20f; private Vector3 m_LocalGravity = Vector3.zero; private Vector3 m_ObjectMove = Vector3.zero; private Vector3 m_ObjectPrevPosition = Vector3.zero; private float m_BoneTotalLength; private float m_ObjectScale = 1f; private float m_Time; private float m_Weight = 1f; private bool m_DistantDisabled; private List<Particle> m_Particles = new List<Particle>(); private void Start() { SetupParticles(); } private void FixedUpdate() { if (m_UpdateMode == UpdateMode.AnimatePhysics) { PreUpdate(); } } private void Update() { if (m_UpdateMode != UpdateMode.AnimatePhysics) { PreUpdate(); } } private void LateUpdate() { if (m_DistantDisable) { CheckDistance(); } if (m_Weight > 0f && (!m_DistantDisable || !m_DistantDisabled)) { float deltaTime = Time.deltaTime; UpdateDynamicBones(deltaTime); } } private void PreUpdate() { if (m_Weight > 0f && (!m_DistantDisable || !m_DistantDisabled)) { InitTransforms(); } } private void CheckDistance() { //IL_003d: 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) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) Transform val = m_ReferenceObject; if ((Object)(object)val == (Object)null && (Object)(object)Camera.main != (Object)null) { val = ((Component)Camera.main).transform; } if (!((Object)(object)val != (Object)null)) { return; } Vector3 val2 = val.position - ((Component)this).transform.position; bool flag = ((Vector3)(ref val2)).sqrMagnitude > m_DistanceToObject * m_DistanceToObject; if (flag != m_DistantDisabled) { if (!flag) { ResetParticlesPosition(); } m_DistantDisabled = flag; } } private void OnEnable() { ResetParticlesPosition(); } private void OnDisable() { InitTransforms(); } private void OnValidate() { m_UpdateRate = Mathf.Max(m_UpdateRate, 0f); m_Damping = Mathf.Clamp01(m_Damping); m_Elasticity = Mathf.Clamp01(m_Elasticity); m_Stiffness = Mathf.Clamp01(m_Stiffness); m_Inert = Mathf.Clamp01(m_Inert); m_Radius = Mathf.Max(m_Radius, 0f); if (Application.isEditor && Application.isPlaying) { InitTransforms(); SetupParticles(); } } private void OnDrawGizmosSelected() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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) //IL_00be: Unknown result type (might be due to invalid IL or missing references) if (!((Behaviour)this).enabled || (Object)(object)m_Root == (Object)null) { return; } if (Application.isEditor && !Application.isPlaying && ((Component)this).transform.hasChanged) { InitTransforms(); SetupParticles(); } Gizmos.color = Color.white; for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; if (particle.m_ParentIndex >= 0) { Particle particle2 = m_Particles[particle.m_ParentIndex]; Gizmos.DrawLine(particle.m_Position, particle2.m_Position); } if (particle.m_Radius > 0f) { Gizmos.DrawWireSphere(particle.m_Position, particle.m_Radius * m_ObjectScale); } } } public void SetWeight(float w) { if (m_Weight != w) { if (w == 0f) { InitTransforms(); } else if (m_Weight == 0f) { ResetParticlesPosition(); } m_Weight = w; } } public float GetWeight() { return m_Weight; } private void UpdateDynamicBones(float t) { //IL_001e: 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) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_Root == (Object)null) { return; } m_ObjectScale = Mathf.Abs(((Component)this).transform.lossyScale.x); m_ObjectMove = ((Component)this).transform.position - m_ObjectPrevPosition; m_ObjectPrevPosition = ((Component)this).transform.position; int num = 1; if (m_UpdateRate > 0f) { float num2 = 1f / m_UpdateRate; m_Time += t; num = 0; while (m_Time >= num2) { m_Time -= num2; if (++num >= 3) { m_Time = 0f; break; } } } if (num > 0) { for (int i = 0; i < num; i++) { UpdateParticles1(); UpdateParticles2(); m_ObjectMove = Vector3.zero; } } else { SkipUpdateParticles(); } ApplyParticlesToTransforms(); } private void SetupParticles() { //IL_002b: 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_0041: 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) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) m_Particles.Clear(); if ((Object)(object)m_Root == (Object)null) { return; } m_LocalGravity = m_Root.InverseTransformDirection(m_Gravity); m_ObjectScale = Mathf.Abs(((Component)this).transform.lossyScale.x); m_ObjectPrevPosition = ((Component)this).transform.position; m_ObjectMove = Vector3.zero; m_BoneTotalLength = 0f; AppendParticles(m_Root, -1, 0f); for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; particle.m_Damping = m_Damping; particle.m_Elasticity = m_Elasticity; particle.m_Stiffness = m_Stiffness; particle.m_Inert = m_Inert; particle.m_Radius = m_Radius; if (m_BoneTotalLength > 0f) { float num = particle.m_BoneLength / m_BoneTotalLength; if (m_DampingDistrib != null && m_DampingDistrib.keys.Length != 0) { particle.m_Damping *= m_DampingDistrib.Evaluate(num); } if (m_ElasticityDistrib != null && m_ElasticityDistrib.keys.Length != 0) { particle.m_Elasticity *= m_ElasticityDistrib.Evaluate(num); } if (m_StiffnessDistrib != null && m_StiffnessDistrib.keys.Length != 0) { particle.m_Stiffness *= m_StiffnessDistrib.Evaluate(num); } if (m_InertDistrib != null && m_InertDistrib.keys.Length != 0) { particle.m_Inert *= m_InertDistrib.Evaluate(num); } if (m_RadiusDistrib != null && m_RadiusDistrib.keys.Length != 0) { particle.m_Radius *= m_RadiusDistrib.Evaluate(num); } } particle.m_Damping = Mathf.Clamp01(particle.m_Damping); particle.m_Elasticity = Mathf.Clamp01(particle.m_Elasticity); particle.m_Stiffness = Mathf.Clamp01(particle.m_Stiffness); particle.m_Inert = Mathf.Clamp01(particle.m_Inert); particle.m_Radius = Mathf.Max(particle.m_Radius, 0f); } } private void AppendParticles(Transform b, int parentIndex, float boneLength) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_002b: 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_0031: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) Particle particle = new Particle(); particle.m_Transform = b; particle.m_ParentIndex = parentIndex; Vector3 val; if ((Object)(object)b != (Object)null) { val = (particle.m_Position = (particle.m_PrevPosition = b.position)); particle.m_InitLocalPosition = b.localPosition; particle.m_InitLocalRotation = b.localRotation; } else { Transform transform = m_Particles[parentIndex].m_Transform; if (m_EndLength > 0f) { Transform parent = transform.parent; if ((Object)(object)parent != (Object)null) { particle.m_EndOffset = transform.InverseTransformPoint(transform.position * 2f - parent.position) * m_EndLength; } else { particle.m_EndOffset = new Vector3(m_EndLength, 0f, 0f); } } else { particle.m_EndOffset = transform.InverseTransformPoint(((Component)this).transform.TransformDirection(m_EndOffset) + transform.position); } val = (particle.m_Position = (particle.m_PrevPosition = transform.TransformPoint(particle.m_EndOffset))); } if (parentIndex >= 0) { float num = boneLength; val = m_Particles[parentIndex].m_Transform.position - particle.m_Position; boneLength = num + ((Vector3)(ref val)).magnitude; particle.m_BoneLength = boneLength; m_BoneTotalLength = Mathf.Max(m_BoneTotalLength, boneLength); } int count = m_Particles.Count; m_Particles.Add(particle); if (!((Object)(object)b != (Object)null)) { return; } for (int i = 0; i < b.childCount; i++) { bool flag = false; if (m_Exclusions != null) { for (int j = 0; j < m_Exclusions.Count; j++) { if ((Object)(object)m_Exclusions[j] == (Object)(object)b.GetChild(i)) { flag = true; break; } } } if (!flag) { AppendParticles(b.GetChild(i), count, boneLength); } } if (b.childCount == 0 && (m_EndLength > 0f || m_EndOffset != Vector3.zero)) { AppendParticles(null, count, boneLength); } } private void InitTransforms() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; if ((Object)(object)particle.m_Transform != (Object)null) { particle.m_Transform.localPosition = particle.m_InitLocalPosition; particle.m_Transform.localRotation = particle.m_InitLocalRotation; } } } private void ResetParticlesPosition() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_0064: 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_006a: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //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_0039: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; if ((Object)(object)particle.m_Transform != (Object)null) { particle.m_Position = (particle.m_PrevPosition = particle.m_Transform.position); continue; } Transform transform = m_Particles[particle.m_ParentIndex].m_Transform; particle.m_Position = (particle.m_PrevPosition = transform.TransformPoint(particle.m_EndOffset)); } m_ObjectPrevPosition = ((Component)this).transform.position; } private void UpdateParticles1() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0048: 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) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) Vector3 gravity = m_Gravity; Vector3 normalized = ((Vector3)(ref m_Gravity)).normalized; Vector3 val = m_Root.TransformDirection(m_LocalGravity); Vector3 val2 = normalized * Mathf.Max(Vector3.Dot(val, normalized), 0f); gravity -= val2; gravity = (gravity + m_Force) * m_ObjectScale; for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; if (particle.m_ParentIndex >= 0) { Vector3 val3 = particle.m_Position - particle.m_PrevPosition; Vector3 val4 = m_ObjectMove * particle.m_Inert; particle.m_PrevPosition = particle.m_Position + val4; particle.m_Position += val3 * (1f - particle.m_Damping) + gravity + val4; } else { particle.m_PrevPosition = particle.m_Position; particle.m_Position = particle.m_Transform.position; } } } private void UpdateParticles2() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) Plane val = default(Plane); for (int i = 1; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; Particle particle2 = m_Particles[particle.m_ParentIndex]; Vector3 val2; float magnitude; if ((Object)(object)particle.m_Transform != (Object)null) { val2 = particle2.m_Transform.position - particle.m_Transform.position; magnitude = ((Vector3)(ref val2)).magnitude; } else { Matrix4x4 localToWorldMatrix = particle2.m_Transform.localToWorldMatrix; val2 = ((Matrix4x4)(ref localToWorldMatrix)).MultiplyVector(particle.m_EndOffset); magnitude = ((Vector3)(ref val2)).magnitude; } float num = Mathf.Lerp(1f, particle.m_Stiffness, m_Weight); if (num > 0f || particle.m_Elasticity > 0f) { Matrix4x4 localToWorldMatrix2 = particle2.m_Transform.localToWorldMatrix; ((Matrix4x4)(ref localToWorldMatrix2)).SetColumn(3, Vector4.op_Implicit(particle2.m_Position)); Vector3 val3 = ((!((Object)(object)particle.m_Transform != (Object)null)) ? ((Matrix4x4)(ref localToWorldMatrix2)).MultiplyPoint3x4(particle.m_EndOffset) : ((Matrix4x4)(ref localToWorldMatrix2)).MultiplyPoint3x4(particle.m_Transform.localPosition)); Vector3 val4 = val3 - particle.m_Position; particle.m_Position += val4 * particle.m_Elasticity; if (num > 0f) { val4 = val3 - particle.m_Position; float magnitude2 = ((Vector3)(ref val4)).magnitude; float num2 = magnitude * (1f - num) * 2f; if (magnitude2 > num2) { particle.m_Position += val4 * ((magnitude2 - num2) / magnitude2); } } } if (m_Colliders != null) { float particleRadius = particle.m_Radius * m_ObjectScale; for (int j = 0; j < m_Colliders.Count; j++) { DynamicBoneCollider dynamicBoneCollider = m_Colliders[j]; if ((Object)(object)dynamicBoneCollider != (Object)null && ((Behaviour)dynamicBoneCollider).enabled) { dynamicBoneCollider.Collide(ref particle.m_Position, particleRadius); } } } if (m_FreezeAxis != 0) { switch (m_FreezeAxis) { case FreezeAxis.X: ((Plane)(ref val)).SetNormalAndPosition(particle2.m_Transform.right, particle2.m_Position); break; case FreezeAxis.Y: ((Plane)(ref val)).SetNormalAndPosition(particle2.m_Transform.up, particle2.m_Position); break; case FreezeAxis.Z: ((Plane)(ref val)).SetNormalAndPosition(particle2.m_Transform.forward, particle2.m_Position); break; } particle.m_Position -= ((Plane)(ref val)).normal * ((Plane)(ref val)).GetDistanceToPoint(particle.m_Position); } Vector3 val5 = particle2.m_Position - particle.m_Position; float magnitude3 = ((Vector3)(ref val5)).magnitude; if (magnitude3 > 0f) { particle.m_Position += val5 * ((magnitude3 - magnitude) / magnitude3); } } } private void SkipUpdateParticles() { //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008e: 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) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019d: 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) for (int i = 0; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; if (particle.m_ParentIndex >= 0) { particle.m_PrevPosition += m_ObjectMove; particle.m_Position += m_ObjectMove; Particle particle2 = m_Particles[particle.m_ParentIndex]; Vector3 val; float magnitude; if ((Object)(object)particle.m_Transform != (Object)null) { val = particle2.m_Transform.position - particle.m_Transform.position; magnitude = ((Vector3)(ref val)).magnitude; } else { Matrix4x4 localToWorldMatrix = particle2.m_Transform.localToWorldMatrix; val = ((Matrix4x4)(ref localToWorldMatrix)).MultiplyVector(particle.m_EndOffset); magnitude = ((Vector3)(ref val)).magnitude; } float num = Mathf.Lerp(1f, particle.m_Stiffness, m_Weight); if (num > 0f) { Matrix4x4 localToWorldMatrix2 = particle2.m_Transform.localToWorldMatrix; ((Matrix4x4)(ref localToWorldMatrix2)).SetColumn(3, Vector4.op_Implicit(particle2.m_Position)); Vector3 val2 = ((!((Object)(object)particle.m_Transform != (Object)null)) ? ((Matrix4x4)(ref localToWorldMatrix2)).MultiplyPoint3x4(particle.m_EndOffset) : ((Matrix4x4)(ref localToWorldMatrix2)).MultiplyPoint3x4(particle.m_Transform.localPosition)); Vector3 val3 = val2 - particle.m_Position; float magnitude2 = ((Vector3)(ref val3)).magnitude; float num2 = magnitude * (1f - num) * 2f; if (magnitude2 > num2) { particle.m_Position += val3 * ((magnitude2 - num2) / magnitude2); } } Vector3 val4 = particle2.m_Position - particle.m_Position; float magnitude3 = ((Vector3)(ref val4)).magnitude; if (magnitude3 > 0f) { particle.m_Position += val4 * ((magnitude3 - magnitude) / magnitude3); } } else { particle.m_PrevPosition = particle.m_Position; particle.m_Position = particle.m_Transform.position; } } } private static Vector3 MirrorVector(Vector3 v, Vector3 axis) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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) return v - axis * (Vector3.Dot(v, axis) * 2f); } private void ApplyParticlesToTransforms() { //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) for (int i = 1; i < m_Particles.Count; i++) { Particle particle = m_Particles[i]; Particle particle2 = m_Particles[particle.m_ParentIndex]; if (particle2.m_Transform.childCount <= 1) { Vector3 val = ((!((Object)(object)particle.m_Transform != (Object)null)) ? particle.m_EndOffset : particle.m_Transform.localPosition); Vector3 val2 = particle.m_Position - particle2.m_Position; Quaternion val3 = Quaternion.FromToRotation(particle2.m_Transform.TransformDirection(val), val2); particle2.m_Transform.rotation = val3 * particle2.m_Transform.rotation; } if ((Object)(object)particle.m_Transform != (Object)null) { particle.m_Transform.position = particle.m_Position; } } } } [AddComponentMenu("Dynamic Bone/Dynamic Bone Collider")] public class DynamicBoneCollider : MonoBehaviour { public enum Direction { X, Y, Z } public enum Bound { Outside, Inside } public Vector3 m_Center = Vector3.zero; public float m_Radius = 0.5f; public float m_Height; public Direction m_Direction; public Bound m_Bound; private void OnValidate() { m_Radius = Mathf.Max(m_Radius, 0f); m_Height = Mathf.Max(m_Height, 0f); } public void Collide(ref Vector3 particlePosition, float particleRadius) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) float num = m_Radius * Mathf.Abs(((Component)this).transform.lossyScale.x); float num2 = m_Height * 0.5f - m_Radius; if (num2 <= 0f) { if (m_Bound == Bound.Outside) { OutsideSphere(ref particlePosition, particleRadius, ((Component)this).transform.TransformPoint(m_Center), num); } else { InsideSphere(ref particlePosition, particleRadius, ((Component)this).transform.TransformPoint(m_Center), num); } return; } Vector3 center = m_Center; Vector3 center2 = m_Center; switch (m_Direction) { case Direction.X: center.x -= num2; center2.x += num2; break; case Direction.Y: center.y -= num2; center2.y += num2; break; case Direction.Z: center.z -= num2; center2.z += num2; break; } if (m_Bound == Bound.Outside) { OutsideCapsule(ref particlePosition, particleRadius, ((Component)this).transform.TransformPoint(center), ((Component)this).transform.TransformPoint(center2), num); } else { InsideCapsule(ref particlePosition, particleRadius, ((Component)this).transform.TransformPoint(center), ((Component)this).transform.TransformPoint(center2), num); } } private static void OutsideSphere(ref Vector3 particlePosition, float particleRadius, Vector3 sphereCenter, float sphereRadius) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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) //IL_004d: Unknown result type (might be due to invalid IL or missing references) float num = sphereRadius + particleRadius; float num2 = num * num; Vector3 val = particlePosition - sphereCenter; float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; if (sqrMagnitude > 0f && sqrMagnitude < num2) { float num3 = Mathf.Sqrt(sqrMagnitude); particlePosition = sphereCenter + val * (num / num3); } } private static void InsideSphere(ref Vector3 particlePosition, float particleRadius, Vector3 sphereCenter, float sphereRadius) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //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_003d: 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) float num = sphereRadius - particleRadius; float num2 = num * num; Vector3 val = particlePosition - sphereCenter; float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; if (sqrMagnitude > num2) { float num3 = Mathf.Sqrt(sqrMagnitude); particlePosition = sphereCenter + val * (num / num3); } } private static void OutsideCapsule(ref Vector3 particlePosition, float particleRadius, Vector3 capsuleP0, Vector3 capsuleP1, float capsuleRadius) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_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_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0020: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) float num = capsuleRadius + particleRadius; float num2 = num * num; Vector3 val = capsuleP1 - capsuleP0; Vector3 val2 = particlePosition - capsuleP0; float num3 = Vector3.Dot(val2, val); if (num3 <= 0f) { float sqrMagnitude = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude > 0f && sqrMagnitude < num2) { float num4 = Mathf.Sqrt(sqrMagnitude); particlePosition = capsuleP0 + val2 * (num / num4); } return; } float sqrMagnitude2 = ((Vector3)(ref val)).sqrMagnitude; if (num3 >= sqrMagnitude2) { val2 = particlePosition - capsuleP1; float sqrMagnitude3 = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude3 > 0f && sqrMagnitude3 < num2) { float num5 = Mathf.Sqrt(sqrMagnitude3); particlePosition = capsuleP1 + val2 * (num / num5); } } else if (sqrMagnitude2 > 0f) { num3 /= sqrMagnitude2; val2 -= val * num3; float sqrMagnitude4 = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude4 > 0f && sqrMagnitude4 < num2) { float num6 = Mathf.Sqrt(sqrMagnitude4); particlePosition += val2 * ((num - num6) / num6); } } } private static void InsideCapsule(ref Vector3 particlePosition, float particleRadius, Vector3 capsuleP0, Vector3 capsuleP1, float capsuleRadius) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_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_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) float num = capsuleRadius - particleRadius; float num2 = num * num; Vector3 val = capsuleP1 - capsuleP0; Vector3 val2 = particlePosition - capsuleP0; float num3 = Vector3.Dot(val2, val); if (num3 <= 0f) { float sqrMagnitude = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude > num2) { float num4 = Mathf.Sqrt(sqrMagnitude); particlePosition = capsuleP0 + val2 * (num / num4); } return; } float sqrMagnitude2 = ((Vector3)(ref val)).sqrMagnitude; if (num3 >= sqrMagnitude2) { val2 = particlePosition - capsuleP1; float sqrMagnitude3 = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude3 > num2) { float num5 = Mathf.Sqrt(sqrMagnitude3); particlePosition = capsuleP1 + val2 * (num / num5); } } else if (sqrMagnitude2 > 0f) { num3 /= sqrMagnitude2; val2 -= val * num3; float sqrMagnitude4 = ((Vector3)(ref val2)).sqrMagnitude; if (sqrMagnitude4 > num2) { float num6 = Mathf.Sqrt(sqrMagnitude4); particlePosition += val2 * ((num - num6) / num6); } } } private void OnDrawGizmosSelected() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) if (!((Behaviour)this).enabled) { return; } if (m_Bound == Bound.Outside) { Gizmos.color = Color.yellow; } else { Gizmos.color = Color.magenta; } float num = m_Radius * Mathf.Abs(((Component)this).transform.lossyScale.x); float num2 = m_Height * 0.5f - m_Radius; if (num2 <= 0f) { Gizmos.DrawWireSphere(((Component)this).transform.TransformPoint(m_Center), num); return; } Vector3 center = m_Center; Vector3 center2 = m_Center; switch (m_Direction) { case Direction.X: center.x -= num2; center2.x += num2; break; case Direction.Y: center.y -= num2; center2.y += num2; break; case Direction.Z: center.z -= num2; center2.z += num2; break; } Gizmos.DrawWireSphere(((Component)this).transform.TransformPoint(center), num); Gizmos.DrawWireSphere(((Component)this).transform.TransformPoint(center2), num); } } namespace Aetherium { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.KomradeSpectre.Aetherium", "Aetherium", "0.6.8")] [BepInDependency(/*Could not decode attribute arguments.*/)] [R2APISubmoduleDependency(new string[] { "ItemAPI", "LanguageAPI", "PrefabAPI", "SoundAPI", "OrbAPI", "NetworkingAPI", "DirectorAPI", "RecalculateStatsAPI", "UnlockableAPI", "EliteAPI", "CommandHelper", "DamageAPI" })] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class AetheriumPlugin : BaseUnityPlugin { public const string ModGuid = "com.KomradeSpectre.Aetherium"; public const string ModName = "Aetherium"; public const string ModVer = "0.6.8"; internal static ManualLogSource ModLogger; internal static ConfigFile MainConfig; public static AssetBundle MainAssets; public static Dictionary<string, string> ShaderLookup = new Dictionary<string, string> { { "fake ror/hopoo games/deferred/hgstandard", "shaders/deferred/hgstandard" }, { "fake ror/hopoo games/fx/hgcloud intersection remap", "shaders/fx/hgintersectioncloudremap" }, { "fake ror/hopoo games/fx/hgcloud remap", "shaders/fx/hgcloudremap" }, { "fake ror/hopoo games/fx/hgdistortion", "shaders/fx/hgdistortion" }, { "fake ror/hopoo games/deferred/hgsnow topped", "shaders/deferred/hgsnowtopped" }, { "fake ror/hopoo games/fx/hgsolid parallax", "shaders/fx/hgsolidparallax" } }; public List<CoreModule> CoreModules = new List<CoreModule>(); public List<ArtifactBase> Artifacts = new List<ArtifactBase>(); public List<BuffBase> Buffs = new List<BuffBase>(); public List<ItemBase> Items = new List<ItemBase>(); public List<EquipmentBase> Equipments = new List<EquipmentBase>(); public List<EliteEquipmentBase> EliteEquipments = new List<EliteEquipmentBase>(); public List<InteractableBase> Interactables = new List<InteractableBase>(); public List<SurvivorBase> Survivors = new List<SurvivorBase>(); public static HashSet<ItemDef> BlacklistedFromPrinter = new HashSet<ItemDef>(); public static ExpansionDef AetheriumExpansionDef = ScriptableObject.CreateInstance<ExpansionDef>(); public static Dictionary<ArtifactBase, bool> ArtifactStatusDictionary = new Dictionary<ArtifactBase, bool>(); public static Dictionary<BuffBase, bool> BuffStatusDictionary = new Dictionary<BuffBase, bool>(); public static Dictionary<ItemBase, bool> ItemStatusDictionary = new Dictionary<ItemBase, bool>(); public static Dictionary<EquipmentBase, bool> EquipmentStatusDictionary = new Dictionary<EquipmentBase, bool>(); public static Dictionary<EliteEquipmentBase, bool> EliteEquipmentStatusDictionary = new Dictionary<EliteEquipmentBase, bool>(); public static Dictionary<InteractableBase, bool> InteractableStatusDictionary = new Dictionary<InteractableBase, bool>(); public static Dictionary<SurvivorBase, bool> SurvivorStatusDictionary = new Dictionary<SurvivorBase, bool>(); public static List<Material> SwappedMaterials = new List<Material>(); private void Awake() { //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Expected O, but got Unknown //IL_0437: Unknown result type (might be due to invalid IL or missing references) //IL_0441: Expected O, but got Unknown CommandHelper.AddToConsoleWhenReady(); ModLogger = ((BaseUnityPlugin)this).Logger; MainConfig = ((BaseUnityPlugin)this).Config; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aetherium.aetherium_assets")) { MainAssets = AssetBundle.LoadFromStream(stream); } ShaderConversion(MainAssets); GenerateExpansionDef(); using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Aetherium.AetheriumSounds.bnk")) { byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(CoreModule)) select type; ModLogger.LogInfo((object)"--------------CORE MODULES---------------------"); foreach (Type item in enumerable) { CoreModule coreModule = (CoreModule)Activator.CreateInstance(item); coreModule.Init(); ModLogger.LogInfo((object)("Core Module: " + coreModule.Name + " Initialized!")); } ConfigOption<bool> configOption = ((BaseUnityPlugin)this).Config.ActiveBind("Artifacts", "Disable All Artifacts?", defaultValue: false, "Do you wish to disable every artifact in Aetherium?"); if (!configOption) { IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase)) select type; ModLogger.LogInfo((object)"--------------ARTIFACTS---------------------"); foreach (Type item2 in enumerable2) { ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item2); if (ValidateArtifact(artifactBase, Artifacts)) { artifactBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Artifact: " + artifactBase.ArtifactName + " Initialized!")); } } } ConfigOption<bool> configOption2 = ((BaseUnityPlugin)this).Config.ActiveBind("Buffs", "Disable All Standalone Buffs?", defaultValue: false, "Do you wish to disable every standalone buff in Aetherium?"); if (!configOption2) { IEnumerable<Type> enumerable3 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(BuffBase)) select type; ModLogger.LogInfo((object)"--------------BUFFS---------------------"); foreach (Type item3 in enumerable3) { BuffBase buffBase = (BuffBase)Activator.CreateInstance(item3); if (ValidateBuff(buffBase, Buffs)) { buffBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Buff: " + buffBase.BuffName + " Initialized!")); } } } ConfigOption<bool> configOption3 = ((BaseUnityPlugin)this).Config.ActiveBind("Items", "Disable All Items?", defaultValue: false, "Do you wish to disable every item in Aetherium?"); if (!configOption3) { IEnumerable<Type> enumerable4 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase)) select type; ModLogger.LogInfo((object)"----------------------ITEMS--------------------"); foreach (Type item4 in enumerable4) { ItemBase itemBase = (ItemBase)Activator.CreateInstance(item4); if (ValidateItem(itemBase, Items)) { itemBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Item: " + itemBase.ItemName + " Initialized!")); } } ShopTerminalBehavior.GenerateNewPickupServer_bool += new Manipulator(ItemBase.BlacklistFromPrinter); ContagiousItemManager.Init += new hook_Init(ItemBase.RegisterVoidPairings); } ConfigOption<bool> configOption4 = ((BaseUnityPlugin)this).Config.ActiveBind("Equipment", "Disable All Equipment?", defaultValue: false, "Do you wish to disable every equipment in Aetherium?"); if (!configOption4) { IEnumerable<Type> enumerable5 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(EquipmentBase)) select type; ModLogger.LogInfo((object)"-----------------EQUIPMENT---------------------"); foreach (Type item5 in enumerable5) { EquipmentBase equipmentBase = (EquipmentBase)Activator.CreateInstance(item5); if (ValidateEquipment(equipmentBase, Equipments)) { equipmentBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Equipment: " + equipmentBase.EquipmentName + " Initialized!")); } } } ConfigOption<bool> configOption5 = ((BaseUnityPlugin)this).Config.ActiveBind("Survivor", "Disable All Survivors?", defaultValue: false, "Do you wish to disable every survivor in Aetherium?"); if (!configOption4) { IEnumerable<Type> enumerable6 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(SurvivorBase)) select type; ModLogger.LogInfo((object)"-----------------SURVIVORS---------------------"); foreach (Type item6 in enumerable6) { SurvivorBase survivorBase = (SurvivorBase)Activator.CreateInstance(item6); if (ValidateSurvivor(survivorBase, Survivors)) { survivorBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Survivor: " + survivorBase.SurvivorName + " Initialized!")); } } } IEnumerable<Type> enumerable7 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(EliteEquipmentBase)) select type; ModLogger.LogInfo((object)"-------------ELITE EQUIPMENT---------------------"); foreach (Type item7 in enumerable7) { EliteEquipmentBase eliteEquipmentBase = (EliteEquipmentBase)Activator.CreateInstance(item7); if (ValidateEliteEquipment(eliteEquipmentBase, EliteEquipments)) { eliteEquipmentBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Elite Equipment: " + eliteEquipmentBase.EliteEquipmentName + " Initialized!")); } } IEnumerable<Type> enumerable8 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(InteractableBase)) select type; ModLogger.LogInfo((object)"-----------------INTERACTABLES---------------------"); foreach (Type item8 in enumerable8) { InteractableBase interactableBase = (InteractableBase)Activator.CreateInstance(item8); if (ValidateInteractable(interactableBase, Interactables)) { interactableBase.Init(((BaseUnityPlugin)this).Config); ModLogger.LogInfo((object)("Interactable: " + interactableBase.InteractableName + " Initialized!")); } } ModLogger.LogInfo((object)"-----------------------------------------------"); ModLogger.LogInfo((object)"AETHERIUM INITIALIZATIONS DONE"); if (ArtifactStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Artifacts Enabled: {ArtifactStatusDictionary.Count}"); } if (BuffStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Standalone Buffs Enabled: {BuffStatusDictionary.Count}"); } if (ItemStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Items Enabled: {ItemStatusDictionary.Count}"); } if (EquipmentStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Equipment Enabled: {EquipmentStatusDictionary.Count}"); } if (EliteEquipmentStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Elite Equipment Enabled: {EliteEquipmentStatusDictionary.Count}"); } if (InteractableStatusDictionary.Count > 0) { ModLogger.LogInfo((object)$"Interactables Enabled: {InteractableStatusDictionary.Count}"); } ModLogger.LogInfo((object)"-----------------------------------------------"); } [ConCommand(/*Could not decode attribute arguments.*/)] public static void CCGiveAllAetheriumItems(ConCommandArgs args) { CharacterBody val = ((ConCommandArgs)(ref args)).TryGetSenderBody(); if (!Object.op_Implicit((Object)(object)val) || !Object.op_Implicit((Object)(object)val.inventory)) { return; } foreach (KeyValuePair<ItemBase, bool> item in ItemStatusDictionary.Where((KeyValuePair<ItemBase, bool> x) => x.Value)) { val.inventory.GiveItem(item.Key.ItemDef, 1); } } public void GenerateExpansionDef() { LanguageAPI.Add("AETHERIUM_EXPANSION_DEF_NAME", "Aetherium"); LanguageAPI.Add("AETHERIUM_EXPANSION_DEF_DESCRIPTION", "A whole world of weird items, equipment, elites, and interactables await you."); AetheriumExpansionDef.descriptionToken = "AETHERIUM_EXPANSION_DEF_DESCRIPTION"; AetheriumExpansionDef.nameToken = "AETHERIUM_EXPANSION_DEF_NAME"; AetheriumExpansionDef.iconSprite = MainAssets.LoadAsset<Sprite>("AetheriumActiveIconAlt.png"); AetheriumExpansionDef.disabledIconSprite = MainAssets.LoadAsset<Sprite>("AetheriumInactiveIconAlt.png"); ContentAddition.AddExpansionDef(AetheriumExpansionDef); } public bool ValidateArtifact(ArtifactBase artifact, List<ArtifactBase> artifactList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Artifact: " + artifact.ArtifactName, "Enable Artifact?", true, "Should this artifact appear for selection?").Value; ArtifactStatusDictionary.Add(artifact, value); if (value) { artifactList.Add(artifact); } return value; } public bool ValidateBuff(BuffBase buff, List<BuffBase> buffList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Buff: " + buff.BuffName, "Enable Buff?", true, "Should this buff be registered for use in the game?").Value; BuffStatusDictionary.Add(buff, value); if (value) { buffList.Add(buff); } return value; } public bool ValidateItem(ItemBase item, List<ItemBase> itemList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Enable Item?", true, "Should this item appear in runs?").Value; bool value2 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Blacklist Item from AI Use?", false, "Should the AI not be able to obtain this item?").Value; bool value3 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Blacklist Item from Printers?", false, "Should the printers be able to print this item?").Value; bool value4 = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Require Unlock", true, "Should we require this item to be unlocked before it appears in runs? (Will only affect items with associated unlockables.)").Value; ItemStatusDictionary.Add(item, value); if (value) { itemList.Add(item); if (value2) { item.AIBlacklisted = true; } if (value3) { item.PrinterBlacklisted = true; } item.RequireUnlock = value4; } return value; } public bool ValidateEquipment(EquipmentBase equipment, List<EquipmentBase> equipmentList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Equipment: " + equipment.EquipmentName, "Enable Equipment?", true, "Should this equipment appear in runs?").Value; EquipmentStatusDictionary.Add(equipment, value); if (value) { equipmentList.Add(equipment); return true; } return false; } public bool ValidateEliteEquipment(EliteEquipmentBase eliteEquipment, List<EliteEquipmentBase> eliteEquipmentList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Equipment: " + eliteEquipment.EliteEquipmentName, "Enable Elite Equipment?", true, "Should this elite equipment appear in runs? If disabled, the associated elite will not appear in runs either.").Value; EliteEquipmentStatusDictionary.Add(eliteEquipment, value); if (value) { eliteEquipmentList.Add(eliteEquipment); return true; } return false; } public bool ValidateInteractable(InteractableBase interactable, List<InteractableBase> interactableList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Interactable: " + interactable.InteractableName, "Enable Interactable?", true, "Should this interactable appear in runs?").Value; InteractableStatusDictionary.Add(interactable, value); if (value) { interactableList.Add(interactable); return true; } return false; } public bool ValidateSurvivor(SurvivorBase survivor, List<SurvivorBase> survivorList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Survivor: " + survivor.SurvivorName, "Enable Survivor?", true, "Should this survivor be enabled?").Value; SurvivorStatusDictionary.Add(survivor, value); if (value) { survivorList.Add(survivor); return true; } return false; } public static void ShaderConversion(AssetBundle assets) { IEnumerable<Material> enumerable = from material in assets.LoadAllAssets<Material>() where ((Object)material.shader).name.StartsWith("Fake RoR") select material; foreach (Material item in enumerable) { Shader val = LegacyResourcesAPI.Load<Shader>(ShaderLookup[((Object)item.shader).name.ToLowerInvariant()]); if (Object.op_Implicit((Object)(object)val)) { item.shader = val; SwappedMaterials.Add(item); } } } public static void AttachControllerFinderToObjects(AssetBundle assetbundle) { if (!Object.op_Implicit((Object)(object)assetbundle)) { return; } GameObject[] array = assetbundle.LoadAllAssets<GameObject>(); GameObject[] array2 = array; foreach (GameObject val in array2) { IEnumerable<Renderer> enumerable = from x in val.GetComponentsInChildren<Renderer>() where Object.op_Implicit((Object)(object)x.sharedMaterial) && ((Object)x.sharedMaterial.shader).name.StartsWith("Hopoo Games") select x; foreach (Renderer item in enumerable) { MaterialControllerComponents.HGControllerFinder hGControllerFinder = ((Component)item).gameObject.AddComponent<MaterialControllerComponents.HGControllerFinder>(); } } array = null; } } } namespace Aetherium.Utils { [RequireComponent(typeof(ItemDisplay))] public class ItemFollowerSmooth : MonoBehaviour { public GameObject followerPrefab; public GameObject targetObject; public BezierCurveLine followerCurve; public LineRenderer followerLineRenderer; public float distanceDampTime; public float distanceMaxSpeed; public ItemDisplay itemDisplay; public Vector3 velocityDistance; public Vector3 v0; public Vector3 v1; public float SmoothingNumber; [HideInInspector] public GameObject followerInstance; public void Start() { itemDisplay = ((Component)this).GetComponent<ItemDisplay>(); followerLineRenderer = ((Component)this).GetComponent<LineRenderer>(); Rebuild(); } public void Rebuild() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) if ((int)itemDisplay.GetVisibilityLevel() == 0) { if (Object.op_Implicit((Object)(object)followerInstance)) { Object.Destroy((Object)(object)followerInstance); } if (Object.op_Implicit((Object)(object)followerLineRenderer)) { ((Renderer)followerLineRenderer).enabled = false; } return; } if (!Object.op_Implicit((Object)(object)followerInstance)) { followerInstance = Object.Instantiate<GameObject>(followerPrefab, targetObject.transform.position, Quaternion.identity); followerInstance.transform.localScale = ((Component)this).transform.localScale; if (Object.op_Implicit((Object)(object)followerCurve)) { v0 = followerCurve.v0; v1 = followerCurve.v1; } } if (Object.op_Implicit((Object)(object)followerLineRenderer)) { ((Renderer)followerLineRenderer).enabled = true; } } public void Update() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references)