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 AHIT Plushies v0.5.5
BepInEx/plugins/AHIT Plushies.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 AHIT_Plushies.Config; using BepInEx; using BepInEx.Configuration; using LethalLib.Modules; using Microsoft.CodeAnalysis; 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("AHIT Plushies")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a32cc2fe848e84ea4adf71356fdbd36052aee4b9")] [assembly: AssemblyProduct("AHIT Plushies")] [assembly: AssemblyTitle("AHIT Plushies")] [assembly: AssemblyVersion("1.0.0.0")] [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 AHIT_Plushies { [BepInPlugin("Doomnik.AHITPlushies", "AHIT Plushies", "1.0.0.0")] public class Plugin : BaseUnityPlugin { public static Plugin instance; private const string ModGuid = "Doomnik.AHITPlushies"; private const string ModName = "AHIT Plushies"; private const string ModVersion = "1.0.0.0"; private GeneralSettings _settings; private PlushieSpawnRates _plushieRates; private PlushieSellValues _plushieValues; private WeaponSettings _weaponSettings; private List<Item> _items; private readonly List<string> _weaponsList = new List<string>(3) { "Umbrella", "BaseballBat", "TimePiece" }; private void Awake() { _settings = new GeneralSettings(((BaseUnityPlugin)this).Config); _plushieRates = new PlushieSpawnRates(((BaseUnityPlugin)this).Config); _plushieValues = new PlushieSellValues(((BaseUnityPlugin)this).Config); _weaponSettings = new WeaponSettings(((BaseUnityPlugin)this).Config); instance = this; string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, "ahitplushscrap"); AssetBundle val = AssetBundle.LoadFromFile(text); _items = new List<Item>(17) { val.LoadAsset<Item>("Assets/AHIT Plushies/HatKidPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/ConductorPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/MustacheGirlPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/CAWPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/SnatcherPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/Umbrella.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/BaseballBat.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/BowKidPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/DJGroovesPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/EmpressPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/SealPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/FishDudePlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/FireSpiritPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/MadCrowPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/MafiaDudePlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/GrandkidPlushie.asset"), val.LoadAsset<Item>("Assets/AHIT Plushies/TimePiece.asset") }; foreach (Item item in _items) { LoadConfigValues(item); NetworkPrefabs.RegisterNetworkPrefab(item.spawnPrefab); Utilities.FixMixerGroups(item.spawnPrefab); item.spawnPrefab.GetComponent<GrabbableObject>().customGrabTooltip = "Grab " + item.itemName; if (((Object)item).name == "TimePiece") { item.spawnPrefab.AddComponent<TimePiece>(); } if (_weaponsList.Contains(((Object)item).name)) { SetupWeapon(item); Items.RegisterScrap(item, _weaponSettings.GetValue(((Object)item).name + "SpawnRate").Value, (LevelTypes)(-1)); continue; } Items.RegisterScrap(item, _plushieRates.SpawnRateExperimentation.Value, (LevelTypes)4); Items.RegisterScrap(item, _plushieRates.SpawnRateAssurance.Value, (LevelTypes)8); Items.RegisterScrap(item, _plushieRates.SpawnRateVow.Value, (LevelTypes)16); Items.RegisterScrap(item, _plushieRates.SpawnRateOffense.Value, (LevelTypes)32); Items.RegisterScrap(item, _plushieRates.SpawnRateMarch.Value, (LevelTypes)64); Items.RegisterScrap(item, _plushieRates.SpawnRateRend.Value, (LevelTypes)128); Items.RegisterScrap(item, _plushieRates.SpawnRateDine.Value, (LevelTypes)256); Items.RegisterScrap(item, _plushieRates.SpawnRateTitan.Value, (LevelTypes)512); Items.RegisterScrap(item, _plushieRates.SpawnRateOther.Value, (LevelTypes)(-1)); } ((BaseUnityPlugin)this).Logger.LogInfo((object)"AHIT Plushies Patched Successfully"); } private void SetupWeapon(Item item) { Shovel component = item.spawnPrefab.GetComponent<Shovel>(); component.shovelHitForce = _weaponSettings.GetValue(((Object)item).name + "Damage").Value; } private void LoadConfigValues(Item item) { if (!_weaponsList.Contains(((Object)item).name)) { item.requiresBattery = !item.twoHanded && _settings.PlushiesRequireBattery.Value; if (item.requiresBattery && _settings.PlushiesSpawnWithRandomCharge.Value) { item.spawnPrefab.GetComponent<GrabbableObject>().insertedBattery.charge = (float)Random.Range(_settings.PlushiesMinimumChargeOnSpawn.Value, 100) / 100f; } } item.minValue = (int)((double)_plushieValues.GetSellValue(((Object)item).name + "MinValue").Value * 2.5); item.maxValue = (int)((double)_plushieValues.GetSellValue(((Object)item).name + "MaxValue").Value * 2.5); } } public class TimePiece : MonoBehaviour { private Animator _animator; private Shovel _shovel; private void Start() { _animator = ((Component)this).GetComponentInChildren<Animator>(); _shovel = ((Component)this).GetComponent<Shovel>(); } private void LateUpdate() { bool flag = ((GrabbableObject)_shovel).isHeld || ((GrabbableObject)_shovel).isHeldByEnemy; _animator.SetBool("IsHeld", flag); } } } namespace AHIT_Plushies.Config { public abstract class BaseConfig { internal abstract void SetBindings(ConfigFile cfg); internal virtual ConfigEntry<T> Bind<T>(ConfigFile cfg, string section, string key, T defaultValue, string description = "") { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown return cfg.Bind<T>(section, key, defaultValue, new ConfigDescription(description, (AcceptableValueBase)(object)((typeof(T) != typeof(bool)) ? new AcceptableValueRange<int>(0, 100) : null), Array.Empty<object>())); } } public class GeneralSettings : BaseConfig { public ConfigEntry<bool> PlushiesRequireBattery; public ConfigEntry<bool> PlushiesSpawnWithRandomCharge; public ConfigEntry<int> PlushiesMinimumChargeOnSpawn; public GeneralSettings(ConfigFile cfg) { SetBindings(cfg); } internal sealed override void SetBindings(ConfigFile cfg) { PlushiesRequireBattery = Bind(cfg, "General", "Should one handed plushies require battery power", defaultValue: true); PlushiesSpawnWithRandomCharge = Bind(cfg, "General", "Should plushies spawn with random battery charge", defaultValue: true); PlushiesMinimumChargeOnSpawn = Bind(cfg, "General", "Minimum random spawn charge", 20); } } public class PlushieSellValues : BaseConfig { private readonly Dictionary<string, ConfigEntry<int>> _sellValueList = new Dictionary<string, ConfigEntry<int>>(); private const string SectionPlushies = "Plushie Sell Prices"; private const string SectionBigPlushies = "Big Plushie Sell Prices"; private const string SectionSmallPlushies = "Small Plushie Sell Prices"; private const string SectionWeapons = "Weapon Sell Prices"; private const int DefaultMin = 40; private const int DefaultMax = 80; private const int DefaultBigMin = 60; private const int DefaultBigMax = 110; private const int DefaultSmallMin = 30; private const int DefaultSmallMax = 70; public PlushieSellValues(ConfigFile cfg) { SetBindings(cfg); } internal sealed override void SetBindings(ConfigFile cfg) { _sellValueList["BowKidPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Bow Kid Min Value", 40); _sellValueList["BowKidPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Bow Kid Max Value", 80); _sellValueList["CAWPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "CAW Agent Min Value", 40); _sellValueList["CAWPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "CAW Agent Max Value", 80); _sellValueList["ConductorPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Conductor Min Value", 40); _sellValueList["ConductorPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Conductor Max Value", 80); _sellValueList["FireSpiritPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Fire Spirit Min Value", 40); _sellValueList["FireSpiritPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Fire Spirit Max Value", 80); _sellValueList["FishDudePlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Fish Dude Min Value", 40); _sellValueList["FishDudePlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Fish Dude Max Value", 80); _sellValueList["HatKidPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Hat Kid Min Value", 40); _sellValueList["HatKidPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Hat Kid Max Value", 80); _sellValueList["MustacheGirlPlushieMinValue"] = Bind(cfg, "Plushie Sell Prices", "Mustache Girl Min Value", 40); _sellValueList["MustacheGirlPlushieMaxValue"] = Bind(cfg, "Plushie Sell Prices", "Mustache Girl Max Value", 80); _sellValueList["GrandkidPlushieMinValue"] = Bind(cfg, "Small Plushie Sell Prices", "Grandkid Min Value", 30); _sellValueList["GrandkidPlushieMaxValue"] = Bind(cfg, "Small Plushie Sell Prices", "Grandkid Max Value", 70); _sellValueList["MadCrowPlushieMinValue"] = Bind(cfg, "Small Plushie Sell Prices", "Mad Crow Min Value", 30); _sellValueList["MadCrowPlushieMaxValue"] = Bind(cfg, "Small Plushie Sell Prices", "Mad Crow Max Value", 70); _sellValueList["SealPlushieMinValue"] = Bind(cfg, "Small Plushie Sell Prices", "Seal Min Value", 30); _sellValueList["SealPlushieMaxValue"] = Bind(cfg, "Small Plushie Sell Prices", "Seal Max Value", 70); _sellValueList["DJGroovesPlushieMinValue"] = Bind(cfg, "Big Plushie Sell Prices", "DJ Grooves Min Value", 60); _sellValueList["DJGroovesPlushieMaxValue"] = Bind(cfg, "Big Plushie Sell Prices", "DJ Grooves Max Value", 110); _sellValueList["EmpressPlushieMinValue"] = Bind(cfg, "Big Plushie Sell Prices", "Empress Min Value", 60); _sellValueList["EmpressPlushieMaxValue"] = Bind(cfg, "Big Plushie Sell Prices", "Empress Max Value", 110); _sellValueList["MafiaDudePlushieMinValue"] = Bind(cfg, "Big Plushie Sell Prices", "Mafia Dude Min Value", 60); _sellValueList["MafiaDudePlushieMaxValue"] = Bind(cfg, "Big Plushie Sell Prices", "Mafia Dude Max Value", 110); _sellValueList["SnatcherPlushieMinValue"] = Bind(cfg, "Big Plushie Sell Prices", "Snatcher Min Value", 60); _sellValueList["SnatcherPlushieMaxValue"] = Bind(cfg, "Big Plushie Sell Prices", "Snatcher Max Value", 110); _sellValueList["UmbrellaMinValue"] = Bind(cfg, "Weapon Sell Prices", "Umbrella Min Value", 40); _sellValueList["UmbrellaMaxValue"] = Bind(cfg, "Weapon Sell Prices", "Umbrella Max Value", 80); _sellValueList["BaseballBatMinValue"] = Bind(cfg, "Weapon Sell Prices", "Baseball Bat Min Value", 40); _sellValueList["BaseballBatMaxValue"] = Bind(cfg, "Weapon Sell Prices", "Baseball Bat Max Value", 80); _sellValueList["TimePieceMinValue"] = Bind(cfg, "Weapon Sell Prices", "Time Piece Bat Min Value", 60); _sellValueList["TimePieceMaxValue"] = Bind(cfg, "Weapon Sell Prices", "Time Piece Bat Max Value", 110); } internal ConfigEntry<int> GetSellValue(string propertyName) { return _sellValueList.GetValueOrDefault(propertyName); } internal override ConfigEntry<T> Bind<T>(ConfigFile cfg, string section, string key, T defaultValue, string description = "") { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown bool flag = key.Contains("Min"); return cfg.Bind<T>(section, key, defaultValue, new ConfigDescription("Set the " + (flag ? "minimum" : "maximum") + " sell value of this plushie.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 1000), Array.Empty<object>())); } } public class PlushieSpawnRates : BaseConfig { public ConfigEntry<int> SpawnRateExperimentation; public ConfigEntry<int> SpawnRateAssurance; public ConfigEntry<int> SpawnRateVow; public ConfigEntry<int> SpawnRateOffense; public ConfigEntry<int> SpawnRateMarch; public ConfigEntry<int> SpawnRateRend; public ConfigEntry<int> SpawnRateDine; public ConfigEntry<int> SpawnRateTitan; public ConfigEntry<int> SpawnRateOther; public PlushieSpawnRates(ConfigFile cfg) { SetBindings(cfg); } internal sealed override void SetBindings(ConfigFile cfg) { SpawnRateExperimentation = Bind(cfg, "Spawn Rates", "Experimentation", 10, "Set the spawn rate on this moon"); SpawnRateAssurance = Bind(cfg, "Spawn Rates", "Assurance", 10, "Set the spawn rate on this moon"); SpawnRateVow = Bind(cfg, "Spawn Rates", "Vow", 10, "Set the spawn rate on this moon"); SpawnRateOffense = Bind(cfg, "Spawn Rates", "Offense", 20, "Set the spawn rate on this moon"); SpawnRateMarch = Bind(cfg, "Spawn Rates", "March", 20, "Set the spawn rate on this moon"); SpawnRateRend = Bind(cfg, "Spawn Rates", "Rend", 30, "Set the spawn rate on this moon"); SpawnRateDine = Bind(cfg, "Spawn Rates", "Dine", 30, "Set the spawn rate on this moon"); SpawnRateTitan = Bind(cfg, "Spawn Rates", "Titan", 30, "Set the spawn rate on this moon"); SpawnRateOther = Bind(cfg, "Spawn Rates", "Other Moons", 30, "Set the spawn rate on any other moon"); } } public class WeaponSettings : BaseConfig { private readonly Dictionary<string, ConfigEntry<int>> _weaponsList = new Dictionary<string, ConfigEntry<int>>(); public WeaponSettings(ConfigFile cfg) { SetBindings(cfg); } internal sealed override void SetBindings(ConfigFile cfg) { _weaponsList["UmbrellaDamage"] = Bind(cfg, "Weapon Settings", "Umbrella Damage", 1, "Set the damage value of this weapon"); _weaponsList["BaseballBatDamage"] = Bind(cfg, "Weapon Settings", "Baseball Bat Damage", 1, "Set the damage value of this weapon"); _weaponsList["TimePieceDamage"] = Bind(cfg, "Weapon Settings", "Time Piece Damage", 2, "Set the damage value of this weapon"); _weaponsList["UmbrellaSpawnRate"] = Bind(cfg, "Weapon Settings", "Umbrella Spawn Rate", 15, "Set the spawn rate of this weapon"); _weaponsList["BaseballBatSpawnRate"] = Bind(cfg, "Weapon Settings", "Baseball Bat Spawn Rate", 15, "Set the spawn rate of this weapon"); _weaponsList["TimePieceSpawnRate"] = Bind(cfg, "Weapon Settings", "Time Piece Spawn Rate", 10, "Set the spawn rate of this weapon"); } internal ConfigEntry<int> GetValue(string weapon) { return _weaponsList.GetValueOrDefault(weapon); } } }