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 FatassTeto v2.5.0
LethalTeto.dll
Decompiled a month agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Netcode; 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: AssemblyCompany("LethalTeto")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LethalTeto")] [assembly: AssemblyTitle("LethalTeto")] [assembly: AssemblyVersion("1.0.0.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace TetoMod { [BepInPlugin("com.kagan.tetomod", "Fatass Teto", "2.5.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private static readonly Dictionary<LevelTypes, int> SpawnRarityPerLevel = new Dictionary<LevelTypes, int> { { (LevelTypes)4, 50 }, { (LevelTypes)8, 50 }, { (LevelTypes)16, 50 }, { (LevelTypes)32, 50 }, { (LevelTypes)64, 50 }, { (LevelTypes)2048, 50 }, { (LevelTypes)128, 50 }, { (LevelTypes)512, 60 }, { (LevelTypes)4096, 60 }, { (LevelTypes)8192, 60 }, { (LevelTypes)1024, 50 } }; public void Awake() { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "teto.bundle"); AssetBundle val = AssetBundle.LoadFromFile(text); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load asset bundle!"); return; } GameObject val2 = val.LoadAsset<GameObject>("assets/mods/teto/teto.prefab"); if ((Object)(object)val2 == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load teto prefab!"); return; } SetupLayers(val2); Item item = CreateItemProperties(val, val2); SetupScanNode(val2); SetupNoisemakerProp(val, val2, item); RegisterNetworkPrefab(val2, item); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Fatass Teto v2.5.0 loaded successfully!"); } private void SetupLayers(GameObject prefab) { prefab.layer = LayerMask.NameToLayer("Props"); Transform[] componentsInChildren = prefab.GetComponentsInChildren<Transform>(); foreach (Transform val in componentsInChildren) { ((Component)val).gameObject.layer = prefab.layer; } } private Item CreateItemProperties(AssetBundle bundle, GameObject prefab) { //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_00da: 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) Item val = ScriptableObject.CreateInstance<Item>(); ((Object)val).name = "FatassTetoItem"; val.itemName = "Fatass Teto"; val.spawnPrefab = prefab; val.isScrap = true; val.syncUseFunction = true; val.minValue = 100; val.maxValue = 300; val.weight = 1.35f; val.grabAnim = "HoldLunchbox"; val.itemIcon = bundle.LoadAsset<Sprite>("assets/mods/teto/teto_icon.png"); val.requiresBattery = false; val.grabSFX = bundle.LoadAsset<AudioClip>("assets/mods/teto/tetograb.wav"); val.dropSFX = bundle.LoadAsset<AudioClip>("assets/mods/teto/tetodrop.wav"); val.rotationOffset = new Vector3(0f, -270f, 180f); val.positionOffset = new Vector3(0f, 0f, 0f); val.restingRotation = new Vector3(-90f, 0f, 0f); val.verticalOffset = 0.3f; return val; } private void SetupScanNode(GameObject prefab) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) foreach (Transform item in prefab.transform) { Transform val = item; if (((Object)val).name == "ScanNode") { Object.DestroyImmediate((Object)(object)((Component)val).gameObject); } } GameObject val2 = new GameObject("ScanNode"); val2.transform.SetParent(prefab.transform, false); val2.transform.localPosition = Vector3.zero; int num = LayerMask.NameToLayer("ScanNode"); val2.layer = ((num != -1) ? num : 22); BoxCollider val3 = val2.AddComponent<BoxCollider>(); ((Collider)val3).isTrigger = true; val3.size = new Vector3(0.5f, 0.5f, 0.5f); val3.center = Vector3.zero; ScanNodeProperties val4 = val2.AddComponent<ScanNodeProperties>(); val4.headerText = "Fatass Teto"; val4.subText = "Value"; val4.nodeType = 2; val4.maxRange = 13; val4.minRange = 1; val4.requiresLineOfSight = true; val4.creatureScanID = -1; } private void SetupNoisemakerProp(AssetBundle bundle, GameObject prefab, Item item) { NoisemakerProp val = prefab.GetComponent<NoisemakerProp>(); if ((Object)(object)val == (Object)null) { val = prefab.AddComponent<NoisemakerProp>(); } ((GrabbableObject)val).itemProperties = item; ((GrabbableObject)val).grabbable = true; ((GrabbableObject)val).useCooldown = 0.5f; ((GrabbableObject)val).mainObjectRenderer = prefab.GetComponentInChildren<MeshRenderer>(); if ((Object)(object)((GrabbableObject)val).mainObjectRenderer == (Object)null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"DİKKAT: Teto prefab'ında MeshRenderer bulunamadı! Bu eşya senkronizasyonunu bozabilir."); } List<Collider> list = new List<Collider>(); Collider[] componentsInChildren = prefab.GetComponentsInChildren<Collider>(); foreach (Collider val2 in componentsInChildren) { if (!val2.isTrigger && ((Object)((Component)val2).gameObject).name != "ScanNode") { list.Add(val2); } } ((GrabbableObject)val).propColliders = list.ToArray(); AudioSource val3 = prefab.GetComponent<AudioSource>(); if ((Object)(object)val3 == (Object)null) { val3 = prefab.AddComponent<AudioSource>(); } val3.playOnAwake = false; val3.spatialBlend = 1f; val3.volume = 1f; val3.maxDistance = 30f; val.noiseAudio = val3; val.noiseRange = 15f; val.maxLoudness = 1f; val.minLoudness = 0.8f; val.minPitch = 0.9f; val.maxPitch = 1.1f; AudioClip val4 = bundle.LoadAsset<AudioClip>("assets/mods/teto/tetograb.wav"); if ((Object)(object)val4 != (Object)null) { val.noiseSFX = (AudioClip[])(object)new AudioClip[1] { val4 }; val.noiseSFXFar = (AudioClip[])(object)new AudioClip[1] { val4 }; } } private void RegisterNetworkPrefab(GameObject prefab, Item item) { if ((Object)(object)prefab.GetComponent<NetworkObject>() == (Object)null) { prefab.AddComponent<NetworkObject>(); } NetworkPrefabs.RegisterNetworkPrefab(prefab); Items.RegisterScrap(item, SpawnRarityPerLevel, (Dictionary<string, int>)null); } } public static class PluginInfo { public const string PLUGIN_GUID = "com.kagan.tetomod"; public const string PLUGIN_NAME = "Fatass Teto"; public const string PLUGIN_VERSION = "2.5.0"; } }