Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of CHIERNA YAMA v1.0.0
CHIERNA_YAMA.dll
Decompiled 9 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("m1r0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("CHIERNA_YAMA")] [assembly: AssemblyTitle("CHIERNA_YAMA")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public class ChiernaYamaConfig { public ConfigEntry<int> GlassDurability { get; private set; } public ConfigEntry<int> GlassBreakadgeMultiplier { get; private set; } public ConfigEntry<float> ContainedYamaJitterIncrement { get; private set; } public ConfigEntry<int> MinSpawnValue { get; private set; } public ConfigEntry<int> MaxSpawnValue { get; private set; } public ConfigEntry<int> MinReleasedValue { get; private set; } public ConfigEntry<int> MaxReleasedValue { get; private set; } public ConfigEntry<float> Mass { get; private set; } public ConfigEntry<float> SizeMultiplier { get; private set; } public ConfigEntry<float> PriceMultiplier { get; private set; } public ConfigEntry<float> MassMultiplier { get; private set; } public ConfigEntry<float> PullStrength { get; private set; } public ConfigEntry<float> PullStrengthIncrement { get; private set; } public ConfigEntry<float> PullStrengthRadius { get; private set; } public ConfigEntry<int> AmountOfConsumes { get; private set; } public ConfigEntry<float> ImplodeSpeed { get; private set; } public ConfigEntry<float> ExplodeSpeed { get; private set; } public ConfigEntry<float> ExplodeRadiusMultiplier { get; private set; } public ConfigEntry<float> MaxSizeLimit { get; private set; } public ConfigEntry<float> MaxPriceLimit { get; private set; } public ConfigEntry<float> MaxMassLimit { get; private set; } public ConfigEntry<float> MaxPullStrengthLimit { get; private set; } public void Init(ConfigFile config) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Expected O, but got Unknown //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Expected O, but got Unknown //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Expected O, but got Unknown //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Expected O, but got Unknown //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Expected O, but got Unknown //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Expected O, but got Unknown //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Expected O, but got Unknown //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Expected O, but got Unknown //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Expected O, but got Unknown //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Expected O, but got Unknown //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Expected O, but got Unknown //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Expected O, but got Unknown //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Expected O, but got Unknown //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Expected O, but got Unknown //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Expected O, but got Unknown //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Expected O, but got Unknown //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Expected O, but got Unknown //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Expected O, but got Unknown //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Expected O, but got Unknown //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Expected O, but got Unknown //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Expected O, but got Unknown //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Expected O, but got Unknown //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Expected O, but got Unknown //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Expected O, but got Unknown //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Expected O, but got Unknown //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Expected O, but got Unknown //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Expected O, but got Unknown //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Expected O, but got Unknown //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04e9: Expected O, but got Unknown GlassDurability = config.Bind<int>("Case", "Glass Durability", 3, new ConfigDescription("amount of hits it takes for the glass to break. \nDefault: 3", (AcceptableValueBase)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())); GlassBreakadgeMultiplier = config.Bind<int>("Case", "Glass Breakadge Multiplier", 2, new ConfigDescription("multiplies the visual effect scale of a broken glass.\n (its only visual) \nDefault: 2", (AcceptableValueBase)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); ContainedYamaJitterIncrement = config.Bind<float>("Case", "jitter Increment", 0.33f, new ConfigDescription("increments the jitter of an Yama while its contained.\n (its only visual and its max sum is capped at 2) \nDefault: 0.33", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 2f), Array.Empty<object>())); MinSpawnValue = config.Bind<int>("Spawned Value", "Min Spawned Sell Price", 1000, new ConfigDescription("Minimum value of Chierna Yama when spawned. \nDefault: 1000", (AcceptableValueBase)new AcceptableValueRange<int>(0, 100000), Array.Empty<object>())); MaxSpawnValue = config.Bind<int>("Spawned Value", "Max Spawned Sell Price", 3000, new ConfigDescription("Maximum value ofChierna Yama when spawned. \nDefault: 3000", (AcceptableValueBase)new AcceptableValueRange<int>(0, 100000), Array.Empty<object>())); MinReleasedValue = config.Bind<int>("Released Value", "Min Sell Price After Releasing", 1000, new ConfigDescription("Minimum value of Chierna Yama when released from its protective container. \nAfter releasing it will reroll a new value from this range. \nIf set to `-1` it will retain its value from its previouse state.\nDefault: 1000", (AcceptableValueBase)new AcceptableValueRange<int>(-1, 100000), Array.Empty<object>())); MaxReleasedValue = config.Bind<int>("Released Value", "Max Sell Price After Releasing", 4000, new ConfigDescription("Maximum value of Chierna Yama when released from its protective container. \nDefault: 4000", (AcceptableValueBase)new AcceptableValueRange<int>(0, 100000), Array.Empty<object>())); Mass = config.Bind<float>("Physics", "Weight", 1f, new ConfigDescription("Weight of Chierna Yama in its smallest state \n(glass box adds +1 weight while present) \nDefault: 1", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 20f), Array.Empty<object>())); SizeMultiplier = config.Bind<float>("GrowthMultiplier", "Size Multiplier", 1.12f, new ConfigDescription("Whenever it consumes an object, its current size will be multiplied by this value. \nSet To 1 to disable \nDefault: 1.12", (AcceptableValueBase)new AcceptableValueRange<float>(0.5f, 2f), Array.Empty<object>())); PriceMultiplier = config.Bind<float>("GrowthMultiplier", "Price Multiplier", 1.175f, new ConfigDescription("Whenever it consumes an object, its current price will be multiplied by this value. \nSet To 1 to disable \nDefault: 1.175", (AcceptableValueBase)new AcceptableValueRange<float>(0.5f, 2f), Array.Empty<object>())); MassMultiplier = config.Bind<float>("GrowthMultiplier", "Weight Multiplier", 1.1f, new ConfigDescription("Whenever it consumes an object, its current weight will be multiplied by this value. \nSet To 1 to disable \nDefault: 1.1", (AcceptableValueBase)new AcceptableValueRange<float>(0.5f, 2f), Array.Empty<object>())); PullStrength = config.Bind<float>("Suction", "Pull Srength", 15f, new ConfigDescription("Strength by which are objects pulled towards the Chierna Yama\n calculated as: <Pull Strength>/<distance> \nSet To 0 to disable \nDefault: 15", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())); PullStrengthIncrement = config.Bind<float>("Suction", "Pull Srength Increment", 4f, new ConfigDescription("Value by which is the Pull Strength incremented after it consumes an object \nSet To 0 to disable \nDefault: 4", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())); PullStrengthRadius = config.Bind<float>("Suction", "Pull Srength Radius Limit", 20f, new ConfigDescription("Disables the pull of objects at this distance for performace \nDefault: 20", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())); AmountOfConsumes = config.Bind<int>("Suction", "Amount of consumes to reach its climax", 25, new ConfigDescription("amount of items it needs to consume in order to reach its climax \nDefault: 25", (AcceptableValueBase)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); ImplodeSpeed = config.Bind<float>("Implosion and After", "Implode Speed", 10f, new ConfigDescription("Speed in seconds it takes for the Chierna Yama to Implode after reaching its climax \nDefault: 10", (AcceptableValueBase)new AcceptableValueRange<float>(0.01f, 100f), Array.Empty<object>())); ExplodeSpeed = config.Bind<float>("Implosion and After", "Explode Speed", 5f, new ConfigDescription("Speed in seconds it takes for the Chierna Yama to grow and destroy after imploding \nDefault: 5", (AcceptableValueBase)new AcceptableValueRange<float>(0.01f, 100f), Array.Empty<object>())); ExplodeRadiusMultiplier = config.Bind<float>("Implosion and After", "Explode Radius Multiplier", 1f, new ConfigDescription("Explode maximum size multiplayer. Takes the climax size and multiplies it by this value \nDefault: 1", (AcceptableValueBase)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())); MaxSizeLimit = config.Bind<float>("Limits", "Max Size Limt", 17f, new ConfigDescription("objects size will be capped at this value \n Disable with: -1 \nDefault: 17", (AcceptableValueBase)null, Array.Empty<object>())); MaxPriceLimit = config.Bind<float>("Limits", "Max Price Limt", -1f, new ConfigDescription("objects price will be capped at this value \n Disable with: -1 \nDefault: -1", (AcceptableValueBase)null, Array.Empty<object>())); MaxMassLimit = config.Bind<float>("Limits", "Max Weight Limt", 10f, new ConfigDescription("objects weight will be capped at this value \n Disable with: -1 \nDefault: 10", (AcceptableValueBase)null, Array.Empty<object>())); MaxPullStrengthLimit = config.Bind<float>("Limits", "Max Pull Strength Limt", -1f, new ConfigDescription("objects pull strength will be capped at this value \n Disable with: -1 \nDefault: -1", (AcceptableValueBase)null, Array.Empty<object>())); } } namespace CHIERNA_YAMA { internal class ChiernaYamaController : Trap { private enum DieraState { Contained, Released, Collapsing, Expanding } private DieraState currentState = DieraState.Contained; private int caseDurability; private int dieraRemainingConsumes; private float mass; [Header("GameObjects")] public GameObject containedDiera; public GameObject releasedDiera; public GameObject collapsedDiera; private float absorptionStrength; private Rigidbody rb; private ValuableObject valuableObject; private float glassBreakadge = 3f; private float holeJitter = 0f; private float releasedHoleScale = 1f; private float collapse = 0f; private float collapseSpeed = 0f; public void Damaged() { //IL_016e: 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_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) if (currentState != 0 || !SemiFunc.IsMasterClientOrSingleplayer()) { return; } if (caseDurability <= 0) { float num = valuableObject.dollarValueCurrent; if (CHIERNA_YAMA.CONFIG.MinReleasedValue.Value != -1) { float num2 = CHIERNA_YAMA.CONFIG.MinReleasedValue.Value; float num3 = CHIERNA_YAMA.CONFIG.MaxReleasedValue.Value; num = Math.Max(Random.value * (num3 - num2) + num2, 0f); } if (GameManager.Multiplayer()) { base.photonView.RPC("BreakTheCaseRPC", (RpcTarget)0, new object[1] { num }); } else { BreakTheCaseRPC(num); } } else { glassBreakadge *= CHIERNA_YAMA.CONFIG.GlassBreakadgeMultiplier.Value; holeJitter = Math.Min(2f, holeJitter + CHIERNA_YAMA.CONFIG.ContainedYamaJitterIncrement.Value); if (GameManager.Multiplayer()) { base.photonView.RPC("CrackGlassRPC", (RpcTarget)0, new object[2] { glassBreakadge, holeJitter }); } else { CrackGlassRPC(glassBreakadge, holeJitter); } caseDurability--; } } private void Start() { //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) ((Trap)this).Start(); caseDurability = CHIERNA_YAMA.CONFIG.GlassDurability.Value; dieraRemainingConsumes = CHIERNA_YAMA.CONFIG.AmountOfConsumes.Value; absorptionStrength = CHIERNA_YAMA.CONFIG.PullStrength.Value; mass = CHIERNA_YAMA.CONFIG.Mass.Value + 1f; rb = ((Component)this).GetComponent<Rigidbody>(); valuableObject = ((Component)this).GetComponent<ValuableObject>(); base.physGrabObject.OverrideMass(mass, 0.1f); base.physGrabObject.massOriginal = mass; float num = CHIERNA_YAMA.CONFIG.MinSpawnValue.Value; float num2 = CHIERNA_YAMA.CONFIG.MaxSpawnValue.Value; float num3 = Math.Max(Random.value * (num2 - num) + num, 0f); valuableObject.dollarValueCurrent = num3; valuableObject.dollarValueOriginal = num3; if (GameManager.Multiplayer()) { base.photonView.RPC("CrackGlassRPC", (RpcTarget)0, new object[2] { 0f, 0f }); } else { CrackGlassRPC(0f, 0f); } } private void FixedUpdate() { if (currentState == DieraState.Released && SemiFunc.IsMasterClientOrSingleplayer()) { Suction(); } else if (currentState == DieraState.Collapsing) { if (SemiFunc.IsMasterClientOrSingleplayer()) { Suction(); } CollapseTransformation(); } else if (currentState == DieraState.Expanding) { ExpandingTransformation(); } } private void Suction() { //IL_004d: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_0132: 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_0143: 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_0159: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: 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_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: 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_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: 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_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) float distanceOfEffect = Math.Min(absorptionStrength / 10f * (1f - collapse), CHIERNA_YAMA.CONFIG.PullStrengthRadius.Value); List<PlayerAvatar> list = SemiFunc.PlayerGetAllPlayerAvatarWithinRange(distanceOfEffect, ((Component)this).transform.position, false, default(LayerMask)); List<PhysGrabObject> source = SemiFunc.PhysGrabObjectGetAllWithinRange(distanceOfEffect, ((Component)this).transform.position, false, default(LayerMask), (PhysGrabObject)null); List<Enemy> source2 = (from e in ((Component)LevelGenerator.Instance).GetComponentsInChildren<Enemy>() where Vector3.Distance(((Component)e).transform.position, ((Component)this).transform.position) < distanceOfEffect select e).ToList(); HashSet<Rigidbody> hashSet = new HashSet<Rigidbody>(); hashSet.UnionWith(source.Select((PhysGrabObject p) => p.rb)); hashSet.UnionWith(source2.Select((Enemy p) => p.Rigidbody.rb)); hashSet.Remove(rb); foreach (Rigidbody item in hashSet) { Vector3 val = rb.position - item.position; Vector3 val2 = absorptionStrength * val / ((Vector3)(ref val)).sqrMagnitude * (1f - collapse); item.AddForce(val2, (ForceMode)5); } foreach (PlayerAvatar item2 in list) { Vector3 val3 = (item2.isTumbling ? ((Component)item2.tumble.physGrabObject).transform.position : item2.rb.position); Vector3 val4 = rb.position - val3; Vector3 val5 = absorptionStrength * val4 / ((Vector3)(ref val4)).sqrMagnitude * (1f - collapse); if (!item2.isTumbling) { item2.ForceImpulse(val5 * Time.fixedDeltaTime); } } } private void grow(int n = 1) { //IL_008a: 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_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.IsMasterClientOrSingleplayer() || currentState != DieraState.Released) { return; } if (dieraRemainingConsumes <= 0) { if (GameManager.Multiplayer()) { base.photonView.RPC("StartCollapseRPC", (RpcTarget)0, new object[1] { 1f / CHIERNA_YAMA.CONFIG.ImplodeSpeed.Value }); } else { StartCollapseRPC(1f / CHIERNA_YAMA.CONFIG.ImplodeSpeed.Value); } return; } releasedHoleScale *= MathF.Pow(CHIERNA_YAMA.CONFIG.SizeMultiplier.Value, n); ValuableObject obj = valuableObject; obj.dollarValueCurrent *= MathF.Pow(CHIERNA_YAMA.CONFIG.PriceMultiplier.Value, n); mass *= MathF.Pow(CHIERNA_YAMA.CONFIG.MassMultiplier.Value, n); if (CHIERNA_YAMA.CONFIG.MaxSizeLimit.Value != -1f) { releasedHoleScale = Math.Min(releasedHoleScale, CHIERNA_YAMA.CONFIG.MaxSizeLimit.Value); } if (CHIERNA_YAMA.CONFIG.MaxPriceLimit.Value != -1f) { valuableObject.dollarValueCurrent = Math.Min(valuableObject.dollarValueCurrent, CHIERNA_YAMA.CONFIG.MaxSizeLimit.Value); } if (CHIERNA_YAMA.CONFIG.MaxMassLimit.Value != -1f) { mass = Math.Min(mass, CHIERNA_YAMA.CONFIG.MaxMassLimit.Value); } if (GameManager.Multiplayer()) { base.photonView.RPC("DieraGrowthRPC", (RpcTarget)0, new object[3] { releasedHoleScale, valuableObject.dollarValueCurrent, mass }); } else { DieraGrowthRPC(releasedHoleScale, valuableObject.dollarValueCurrent, mass); } dieraRemainingConsumes -= n; absorptionStrength += CHIERNA_YAMA.CONFIG.PullStrengthIncrement.Value * (float)n; if (CHIERNA_YAMA.CONFIG.MaxPullStrengthLimit.Value != -1f) { absorptionStrength = Math.Min(absorptionStrength, CHIERNA_YAMA.CONFIG.MaxPullStrengthLimit.Value); } } public void OnPlayerSucked() { PlayerAvatar onImpactPlayerAvatar = releasedDiera.GetComponentInChildren<HurtCollider>().onImpactPlayerAvatar; if (!onImpactPlayerAvatar.deadSet) { grow(2); } } public void OnObjectSucked() { grow(); } public void OnEnemySucked() { //IL_0014: 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_0020: Expected I4, but got Unknown Enemy onImpactEnemyEnemy = releasedDiera.GetComponentInChildren<HurtCollider>().onImpactEnemyEnemy; grow(onImpactEnemyEnemy.Type + 1); } private void CollapseTransformation() { //IL_00f6: 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) MeshRenderer componentInChildren = releasedDiera.GetComponentInChildren<MeshRenderer>(); if ((Object)(object)componentInChildren == (Object)null) { return; } ((Renderer)componentInChildren).material.SetFloat("_HoleCollapse", collapse); collapse += collapseSpeed * Time.fixedDeltaTime; if (collapse > 1f && SemiFunc.IsMasterClientOrSingleplayer()) { if (GameManager.Multiplayer()) { base.photonView.RPC("StartExpandingRPC", (RpcTarget)0, new object[2] { 1f / CHIERNA_YAMA.CONFIG.ExplodeSpeed.Value, releasedHoleScale * CHIERNA_YAMA.CONFIG.ExplodeRadiusMultiplier.Value }); } else { StartExpandingRPC(1f / CHIERNA_YAMA.CONFIG.ExplodeSpeed.Value, releasedHoleScale * CHIERNA_YAMA.CONFIG.ExplodeRadiusMultiplier.Value); } } } private void ExpandingTransformation() { //IL_00e6: 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) collapse += collapseSpeed * Time.fixedDeltaTime; MeshRenderer componentInChildren = collapsedDiera.GetComponentInChildren<MeshRenderer>(); if ((Object)(object)componentInChildren == (Object)null) { return; } ((Renderer)componentInChildren).material.SetFloat("_MyTimer", collapse); Light componentInChildren2 = collapsedDiera.GetComponentInChildren<Light>(); if ((Object)(object)componentInChildren2 == (Object)null) { return; } componentInChildren2.range = 20f * collapse; componentInChildren2.intensity = 15f * collapse; if (!SemiFunc.IsMasterClientOrSingleplayer()) { return; } HurtCollider componentInChildren3 = collapsedDiera.GetComponentInChildren<HurtCollider>(); if (collapse > 1f) { if (GameManager.Multiplayer()) { base.photonView.RPC("DobruNocRPC", (RpcTarget)0, Array.Empty<object>()); } else { DobruNocRPC(); } } else if (collapse > 0.8f && !((Behaviour)componentInChildren3).enabled) { ((Behaviour)componentInChildren3).enabled = true; } } [PunRPC] private void CrackGlassRPC(float glassDamage, float holeMoveSpeed, PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { return; } if (!Object.op_Implicit((Object)(object)containedDiera)) { Debug.LogError((object)"CONTAINED DIERA IS NOT INITIALIZED!!!!!!!!!"); return; } MeshRenderer componentInChildren = containedDiera.GetComponentInChildren<MeshRenderer>(); if (!((Object)(object)componentInChildren == (Object)null)) { ((Renderer)componentInChildren).material.SetFloat("_Damage", glassDamage); ((Renderer)componentInChildren).material.SetFloat("_Jitter", holeMoveSpeed); } } [PunRPC] private void BreakTheCaseRPC(float newValue, PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { return; } PhysGrabObjectImpactDetector component = ((Component)this).gameObject.GetComponent<PhysGrabObjectImpactDetector>(); component.ChangePhysAudio((PhysAudio)null); currentState = DieraState.Released; containedDiera.SetActive(false); PhysObjectParticles particles = ((Component)this).GetComponent<PhysGrabObjectImpactDetector>().particles; particles.DestroyParticles(); releasedDiera.SetActive(true); foreach (PhysGrabber item in base.physGrabObject.playerGrabbing) { item.OverrideGrabRelease(); } ((Component)this).GetComponent<PhysGrabObjectImpactDetector>().destroyDisable = true; valuableObject.dollarValueCurrent = newValue; mass -= 1f; base.physGrabObject.OverrideMass(mass, 0.1f); base.physGrabObject.massOriginal = mass; } [PunRPC] private void DieraGrowthRPC(float newScale, float newValue, float newMass, PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: 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) if (SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { MeshRenderer componentInChildren = releasedDiera.GetComponentInChildren<MeshRenderer>(); if (!((Object)(object)componentInChildren == (Object)null)) { ((Renderer)componentInChildren).material.SetFloat("_SphereScale", newScale); releasedDiera.transform.localScale = new Vector3(newScale, newScale, newScale); valuableObject.dollarValueCurrent = newValue; base.physGrabObject.OverrideMass(newMass, 0.1f); base.physGrabObject.massOriginal = mass; } } } [PunRPC] private void StartCollapseRPC(float speed, PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { currentState = DieraState.Collapsing; collapseSpeed = speed; collapse = 0f; ((Behaviour)releasedDiera.GetComponentInChildren<HurtCollider>()).enabled = false; } } [PunRPC] private void StartExpandingRPC(float speed, float holeScale, PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: 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) if (SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { currentState = DieraState.Expanding; releasedDiera.SetActive(false); collapsedDiera.transform.localScale = new Vector3(holeScale, holeScale, holeScale); SphereCollider component = collapsedDiera.GetComponent<SphereCollider>(); component.radius /= CHIERNA_YAMA.CONFIG.ExplodeRadiusMultiplier.Value; MeshRenderer componentInChildren = collapsedDiera.GetComponentInChildren<MeshRenderer>(); ((Renderer)componentInChildren).material.SetFloat("_MyTimer", 0f); collapsedDiera.SetActive(true); collapseSpeed = speed; collapse = 0f; } } [PunRPC] private void DobruNocRPC(PhotonMessageInfo _info = default(PhotonMessageInfo)) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (SemiFunc.MasterAndOwnerOnlyRPC(_info, base.photonView)) { base.physGrabObject.dead = true; Object.Destroy((Object)(object)((Component)this).gameObject); } } } [BepInPlugin("m1r0.CHIERNA_YAMA", "CHIERNA_YAMA", "1.0")] public class CHIERNA_YAMA : BaseUnityPlugin { internal static CHIERNA_YAMA Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } public static ChiernaYamaConfig CONFIG { get; private set; } private void Awake() { Instance = this; CONFIG = new ChiernaYamaConfig(); CONFIG.Init(((BaseUnityPlugin)this).Config); ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { } } [HarmonyPatch(typeof(PlayerController))] internal static class ExamplePlayerControllerPatch { [HarmonyPrefix] [HarmonyPatch("Start")] private static void Start_Prefix(PlayerController __instance) { CHIERNA_YAMA.Logger.LogDebug((object)$"{__instance} Start Prefix"); } [HarmonyPostfix] [HarmonyPatch("Start")] private static void Start_Postfix(PlayerController __instance) { CHIERNA_YAMA.Logger.LogDebug((object)$"{__instance} Start Postfix"); } } }