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 SilvervalePlushies v1.1.1
BepInEx/plugins/silverPlushies/silverPlushies.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using silverPlushies.Behaviours; [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: AssemblyCompany("silverPlushies")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("silverPlushies")] [assembly: AssemblyTitle("silverPlushies")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace silverPlushies { [BepInPlugin("silverPlushies", "silverPlushies", "1.0.0")] public class Plugin : BaseUnityPlugin { public static AssetBundle silverAssets; private void Awake() { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Start Silver plushies mod"); string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "silverplushies"); silverAssets = AssetBundle.LoadFromFile(text); if ((Object)(object)silverAssets == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load bundle. "); } else { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Bundle loaded succesfully"); } Item val = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalPlushItem.asset"); Item val2 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalControllerItem.asset"); Item val3 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalJerkyItem.asset"); Item val4 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalWrenchItem.asset"); Item val5 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalCrabbieItem.asset"); Item val6 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalKnifeItem.asset"); Item val7 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpalCornItem.asset"); Item val8 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalbudItem.asset"); Item val9 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalbudKazooItem.asset"); Item val10 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalbudTeddyItem.asset"); Item val11 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalbudCowItem.asset"); Item val12 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpupPlushItem.asset"); Item val13 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpupStarItem.asset"); Item val14 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpupOwlyItem.asset"); Item val15 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/PetalpupKixItem.asset"); Item val16 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/KonPlushItem.asset"); PlaySoundAction playSoundAction = val16.spawnPrefab.AddComponent<PlaySoundAction>(); ((GrabbableObject)playSoundAction).grabbable = true; ((GrabbableObject)playSoundAction).grabbableToEnemies = true; ((GrabbableObject)playSoundAction).itemProperties = val16; Item val17 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/KonMaskItem.asset"); Item val18 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/MaskPiece1Item.asset"); Item val19 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/MaskPiece2Item.asset"); Item val20 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/MaskPiece3Item.asset"); Item val21 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/KuroPlushItem.asset"); Item val22 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/KazooItem.asset"); PlaySoundAction playSoundAction2 = val22.spawnPrefab.AddComponent<PlaySoundAction>(); ((GrabbableObject)playSoundAction2).grabbable = true; ((GrabbableObject)playSoundAction2).grabbableToEnemies = true; ((GrabbableObject)playSoundAction2).itemProperties = val22; Item val23 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/CornPlushItem.asset"); Item val24 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/CrabbieItem.asset"); Item val25 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/CrabbieCowboyItem.asset"); Item val26 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/MamaGlassesItem.asset"); Item val27 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/DakiItem.asset"); Item val28 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/YuiPlushItem.asset"); Item val29 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/YuiCheeseItem.asset"); Item val30 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/YuiHelmetItem.asset"); Item val31 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/silverPlushItem.asset"); PlaySoundAction playSoundAction3 = val31.spawnPrefab.AddComponent<PlaySoundAction>(); ((GrabbableObject)playSoundAction3).grabbable = true; ((GrabbableObject)playSoundAction3).grabbableToEnemies = true; ((GrabbableObject)playSoundAction3).itemProperties = val31; Item val32 = silverAssets.LoadAsset<Item>("Assets/finished prefabs/items/MamaPlushItem.asset"); PlaySoundAction playSoundAction4 = val32.spawnPrefab.AddComponent<PlaySoundAction>(); ((GrabbableObject)playSoundAction4).grabbable = true; ((GrabbableObject)playSoundAction4).grabbableToEnemies = true; ((GrabbableObject)playSoundAction4).itemProperties = val32; NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); Utilities.FixMixerGroups(val.spawnPrefab); Items.RegisterScrap(val, 15, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab); Utilities.FixMixerGroups(val2.spawnPrefab); Items.RegisterScrap(val2, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val7.spawnPrefab); Utilities.FixMixerGroups(val7.spawnPrefab); Items.RegisterScrap(val7, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val5.spawnPrefab); Utilities.FixMixerGroups(val5.spawnPrefab); Items.RegisterScrap(val5, 7, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val3.spawnPrefab); Utilities.FixMixerGroups(val3.spawnPrefab); Items.RegisterScrap(val3, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val6.spawnPrefab); Utilities.FixMixerGroups(val6.spawnPrefab); Items.RegisterScrap(val6, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val4.spawnPrefab); Utilities.FixMixerGroups(val4.spawnPrefab); Items.RegisterScrap(val4, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val8.spawnPrefab); Utilities.FixMixerGroups(val8.spawnPrefab); Items.RegisterScrap(val8, 10, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val11.spawnPrefab); Utilities.FixMixerGroups(val11.spawnPrefab); Items.RegisterScrap(val11, 7, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val9.spawnPrefab); Utilities.FixMixerGroups(val9.spawnPrefab); Items.RegisterScrap(val9, 7, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val10.spawnPrefab); Utilities.FixMixerGroups(val10.spawnPrefab); Items.RegisterScrap(val10, 7, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val12.spawnPrefab); Utilities.FixMixerGroups(val12.spawnPrefab); Items.RegisterScrap(val12, 6, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val15.spawnPrefab); Utilities.FixMixerGroups(val15.spawnPrefab); Items.RegisterScrap(val15, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val14.spawnPrefab); Utilities.FixMixerGroups(val14.spawnPrefab); Items.RegisterScrap(val14, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val13.spawnPrefab); Utilities.FixMixerGroups(val13.spawnPrefab); Items.RegisterScrap(val13, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val31.spawnPrefab); Utilities.FixMixerGroups(val31.spawnPrefab); Items.RegisterScrap(val31, 2, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val32.spawnPrefab); Utilities.FixMixerGroups(val32.spawnPrefab); Items.RegisterScrap(val32, 2, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val16.spawnPrefab); Utilities.FixMixerGroups(val16.spawnPrefab); Items.RegisterScrap(val16, 2, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val17.spawnPrefab); Utilities.FixMixerGroups(val17.spawnPrefab); Items.RegisterScrap(val17, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val18.spawnPrefab); Utilities.FixMixerGroups(val18.spawnPrefab); Items.RegisterScrap(val18, 6, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val19.spawnPrefab); Utilities.FixMixerGroups(val19.spawnPrefab); Items.RegisterScrap(val19, 6, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val20.spawnPrefab); Utilities.FixMixerGroups(val20.spawnPrefab); Items.RegisterScrap(val20, 6, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val22.spawnPrefab); Utilities.FixMixerGroups(val22.spawnPrefab); Items.RegisterScrap(val22, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val21.spawnPrefab); Utilities.FixMixerGroups(val21.spawnPrefab); Items.RegisterScrap(val21, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val23.spawnPrefab); Utilities.FixMixerGroups(val23.spawnPrefab); Items.RegisterScrap(val23, 15, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val24.spawnPrefab); Utilities.FixMixerGroups(val24.spawnPrefab); Items.RegisterScrap(val24, 4, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val25.spawnPrefab); Utilities.FixMixerGroups(val25.spawnPrefab); Items.RegisterScrap(val25, 3, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val26.spawnPrefab); Utilities.FixMixerGroups(val26.spawnPrefab); Items.RegisterScrap(val26, 5, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val28.spawnPrefab); Utilities.FixMixerGroups(val28.spawnPrefab); Items.RegisterScrap(val28, 9, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val27.spawnPrefab); Utilities.FixMixerGroups(val27.spawnPrefab); Items.RegisterScrap(val27, 3, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val29.spawnPrefab); Utilities.FixMixerGroups(val29.spawnPrefab); Items.RegisterScrap(val29, 5, (LevelTypes)(-1)); NetworkPrefabs.RegisterNetworkPrefab(val30.spawnPrefab); Utilities.FixMixerGroups(val30.spawnPrefab); Items.RegisterScrap(val30, 5, (LevelTypes)(-1)); ((BaseUnityPlugin)this).Logger.LogMessage((object)"Items loaded succesfully"); TerminalNode val33 = ScriptableObject.CreateInstance<TerminalNode>(); val33.clearPreviousText = true; val33.displayText = "This is a silvervale plushie made by Niko\n"; Items.RegisterShopItem(val31, (TerminalNode)null, (TerminalNode)null, val33, 200); val33.clearPreviousText = true; val33.displayText = "This is a mamavale plushie made by Niko\n"; Items.RegisterShopItem(val32, (TerminalNode)null, (TerminalNode)null, val33, 200); val33.clearPreviousText = true; val33.displayText = "This is a Konzetsu plushie made by Lolstarrr\n"; Items.RegisterShopItem(val16, (TerminalNode)null, (TerminalNode)null, val33, 200); val33.clearPreviousText = true; val33.displayText = "Dakimakura of goddess Silvervale\n"; Items.RegisterShopItem(val27, (TerminalNode)null, (TerminalNode)null, val33, 200); ((BaseUnityPlugin)this).Logger.LogMessage((object)"Store loaded succesfully"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin silverPlushies is loaded!"); } } public static class PluginInfo { public const string PLUGIN_GUID = "silverPlushies"; public const string PLUGIN_NAME = "silverPlushies"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace silverPlushies.Behaviours { internal class PlaySoundAction : PhysicsProp { public override void ItemActivate(bool used, bool buttonDown = true) { //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04b4: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_0503: Unknown result type (might be due to invalid IL or missing references) //IL_0505: Unknown result type (might be due to invalid IL or missing references) AudioSource component = ((Component)this).GetComponent<AudioSource>(); ((GrabbableObject)this).ItemActivate(used, buttonDown); bool flag = false; AssetBundle silverAssets = Plugin.silverAssets; Debug.Log((object)"loading angry mama prefab"); GameObject val = silverAssets.LoadAsset<GameObject>("Assets/mamaAngrySoundPrefab.prefab"); AudioClip val2 = null; if ((Object)(object)val != (Object)null) { Debug.Log((object)"Angry mama gameobject loaded"); AudioSource component2 = val.GetComponent<AudioSource>(); if ((Object)(object)component2 != (Object)null) { Debug.Log((object)"Angry mama AudioSource loaded"); val2 = component2.clip; } } if ((Object)(object)((GrabbableObject)this).itemProperties.throwSFX != (Object)null) { Debug.Log((object)"There is a throw SFX"); AudioClip throwSFX = ((GrabbableObject)this).itemProperties.throwSFX; if (!buttonDown) { return; } if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null) { if ((Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[0] != (Object)null) { if (((GrabbableObject)this).playerHeldBy.ItemSlots[0].itemProperties.itemName == "GolKaz") { flag = true; } } else { Debug.Log((object)"Item slot 0 is null"); } if ((Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[1] != (Object)null) { if (((GrabbableObject)this).playerHeldBy.ItemSlots[1].itemProperties.itemName == "GolKaz") { flag = true; } } else { Debug.Log((object)"Item slot 1 is null"); } if ((Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[2] != (Object)null) { if (((GrabbableObject)this).playerHeldBy.ItemSlots[2].itemProperties.itemName == "GolKaz") { flag = true; } } else { Debug.Log((object)"Item slot 2 is null"); } if ((Object)(object)((GrabbableObject)this).playerHeldBy.ItemSlots[3] != (Object)null) { if (((GrabbableObject)this).playerHeldBy.ItemSlots[3].itemProperties.itemName == "GolKaz") { flag = true; } } else { Debug.Log((object)"Item slot 3 is null"); } Vector3 val5; if (((GrabbableObject)this).itemProperties.itemName == "Mamavale plushie" && flag) { Debug.Log((object)"Mamavale and Kazoo are held"); GameObject gameObject = ((Component)((GrabbableObject)this).playerHeldBy).gameObject; Vector3 position = gameObject.transform.position; if ((Object)(object)component != (Object)null) { component.PlayOneShot(val2, 2f); Debug.Log((object)"Angry Mama sound playing"); } else { Debug.Log((object)"Could not find audio source of angry Mama"); } SpawnableMapObject[] spawnableMapObjects = RoundManager.Instance.currentLevel.spawnableMapObjects; foreach (SpawnableMapObject val3 in spawnableMapObjects) { if (!((Object)(object)val3.prefabToSpawn.GetComponentInChildren<Landmine>() == (Object)null)) { GameObject val4 = Object.Instantiate<GameObject>(val3.prefabToSpawn, position, Quaternion.identity); val4.transform.position = position; val4.transform.forward = new Vector3(1f, 0f, 0f); val4.GetComponent<NetworkObject>().Spawn(true); val5 = position; Debug.Log((object)("Tried spawning a mine at " + ((object)(Vector3)(ref val5)).ToString())); break; } } } else if (((GrabbableObject)this).itemProperties.itemName == "GolKaz") { bool flag2 = false; Vector3[] array = (Vector3[])(object)new Vector3[0]; GameObject[] array2 = GameObject.FindGameObjectsWithTag("PhysicsProp"); GameObject gameObject2 = ((Component)((GrabbableObject)this).playerHeldBy).gameObject; Vector3 position2 = gameObject2.transform.position; GameObject[] array3 = array2; foreach (GameObject val6 in array3) { if (((Object)val6).name == "MamaPlush(Clone)") { Debug.Log((object)"Found a mamavale plush"); if (Vector3.Distance(val6.transform.position, position2) < 2f) { flag2 = true; } CollectionExtensions.AddItem<Vector3>((IEnumerable<Vector3>)array, val6.transform.position); } } if (flag2) { Debug.Log((object)"Mamaplush is close"); if ((Object)(object)component != (Object)null) { component.PlayOneShot(val2, 2.5f); Debug.Log((object)"Angry Mama sound playing"); } else { Debug.Log((object)"Could not find audio source of angry Mama"); } SpawnableMapObject[] spawnableMapObjects2 = RoundManager.Instance.currentLevel.spawnableMapObjects; foreach (SpawnableMapObject val7 in spawnableMapObjects2) { if (!((Object)(object)val7.prefabToSpawn.GetComponentInChildren<Landmine>() == (Object)null)) { GameObject val8 = Object.Instantiate<GameObject>(val7.prefabToSpawn, position2, Quaternion.identity); val8.transform.position = position2; val8.transform.forward = new Vector3(1f, 0f, 0f); val8.GetComponent<NetworkObject>().Spawn(true); val5 = position2; Debug.Log((object)("Tried spawning a mine at " + ((object)(Vector3)(ref val5)).ToString())); break; } } } else { Debug.Log((object)"Mamaplush is far"); if ((Object)(object)component != (Object)null) { component.PlayOneShot(throwSFX, 1f); Debug.Log((object)"normal sound effect playing"); } else { Debug.Log((object)"Could not find audio source of normal item"); } } } else if ((Object)(object)component != (Object)null) { component.PlayOneShot(throwSFX, 1f); Debug.Log((object)"normal sound effect playing"); } else { Debug.Log((object)"Could not find audio source of normal item"); } } else { Debug.Log((object)"not held by player"); } } else { Debug.Log((object)"Throw SFX not found"); } } } }